I'm not sure this is a bug. Dot 3 takes the color it is multiplied with, and produces a greyscale value. That's how it knows what the direction of the surface normal is. The color of the surface at that location. If you want colored light with Dot3, then what you need to do is use two surfaces. The lower surface being colored how you want it colored, and the second surface being set to multiply or multiplyx2, with it's colors being the normals, and the texture being set to dot 3. Then the resulting black and white shading will affect the bightness of the colored surface below.