This is actually correct. It's how opacity works :-)
The opacity value tells you how opaque the material is in the given color. So if you have the highest value in all color channels, your object will be fully opaque. If you have 0 everywhere, your object is fully transparent. Now, if you have red and blue set to zero and green to highest value - i.e. your material's base colour is green - it means that the material is transparent to red and blue, but opaque to green...
But wait a minute! That means that if you are observing a white object through the material, green will be blocked and you'll see red and blue - violet! It's a bit counter-intuitive and does not correspond with the way materials work in real world. I'd suggest you use refraction instead (you can set IOR to 1.0 to disable ray-bending), possibly together with volume. In the opacity channel, it really only makes sense to have shades of grey.
Hope this helps you :-)