The longer I try to fix the materials the worse the results seem to be. I have tried a lot of things and went through quite some of the code paths used by the lighting code. I have found a lot of small problems and I broke a lot of small features in the past. I have no longer any clue on how long it will take to fix this mess.
The main problem is, that I have never defined how transparency is supposed to work. I originally had something like alpha blending in the program, but I actually don't like it. I define an opacity (= alpha) for colors and if a material is mostly opaque only a very small amount of light should shine through. So what I do now is to multiply the color components and damp the light by the inverse of the alpha value. That also means, that if the color is red then you will never see any blue or green pass the material, even if it is highly transparent.
Alpha blending would blend the colors by multiplying the light components with the inverse alpha from the filtering color and add the filter color multiplied by alpha. As I calculate the reflective color separately it would mean to add the light damped by the alpha value. But it would also mean, that the resulting light would be the same if you used a red or a blue filter. And I think that is wrong.