get rid of the capacitor, and maybe even the transistor. Unless it's a very high current LED, the PIC should be able to drive it directly. Use pulse width modulation (varying on and off times) to fade the color in and out. Also, go to the Windows paint program, call up the color pallette, do custom color, and look at how a mix of the three base colors (red, green, blue) mix to yield different colors. Use max value as 100%, and vary %'s of all three to get different colors. Red and green (in equal parts) will yield yellow, etc... however, you have to understand your LED... does the Red/green/blue LEDs all have the same milicandella values for a given drive current? you may have to play games to even them out. When we did a power supply board for Sharp LCD displays, the red/grn/blu inputs had adjustments to even out the colors for a given drive level. You may have to do that on the resistors to the LED to get a match of brightness per on time. Like a bicolor led, red/grn, both on should yield yellow, but if you drive both LEDs the same, you get reddish/orange, as the red LEDs are brighter than the green LEDs.