The first problem i can see is that your using loop delays. (Delay10TCYx)
Delays using a loop that just wastes cycles only work for doing one thing at a time.
The usefulness of delay loops is quite limited and you should really only use them for debugging or stuff that happens in sequence.
The reason why they're bad is because the MCU can only do one thing at a time.
So if it's looping waiting for X counts before continuing all other code is waiting.
This including the code for your other LEDS and waiting for them causes major timing issue for the pwm.
So each LED PWM delay interferes with the delay for the other LEDS.
What you need to do is use an interrupt/hardware timer.
Setup one of the hardware timers to trigger an interrupt on overflow and set it's clock so the overflow happens every 100ns.
You can fine tune when it overflows by chancing the timers count register so it starts counting from a number above 0 (to make it overflow more quickly)
Around 100us is good because if you use 100 pwm steps you are left with a repeat rate of 0.01ms (100Hz) which is fine for flicker free led pwm.
Then, inside the interrupt handler, put something like this (see below)
The interrupt handler will automatically execute this code every 100ns no matter what's happening inside void main.
There are 4 variables,
-ledtick (which store the tick count)
-pwmLED1value/2/3 (which contains whatever pwm value you'd like between 0% and 100% brightness.
// Tick variable housekeeping
// 99 is used here because we want an led pwm value of 100 to keep the led on forever.
ledtick++;
if (ledtick > 99) ledtick= 0;
// PWM for LED1
if (pwmLED1value > ledtick) LED1 = on else LED1 = off;
// PWM for LED2
if (pwmLED2value > ledtick) LED2 = on else LED2 = off;
// PWM for LED3
if (pwmLED3value > ledtick) LED3 = on else LED3 = off;
//Optional, (fine tune to get 100us)
HardwareTimerCountRegister = 50;
(Ideally all the code should be in void main but for now inside the interrupt handler is fine.)
You could simplify that even further if you used 0-255 for the pwm range instead of 0-100.
Then you could drop the ledtick variable and just read the hardware 8bit timer register instead.