glFog and alpha

I’m rendering some semi-transparent surfaces with glFog() turned on. Unfortunately glFog affects only the R,G and B values of the surface I’m rendering, leaving the alpha intact. The effect I’m doing is fog over water (the water’s transparent).

With the alpha of the water remaining at 0.3 the fog looks pants. If I set the water alpha to 1.0 then it looks like it should when it gets foggy.

Really what I’d like it to do is have fog with alpha=1.0 and fade that it along with the fog colour, which would be exactly the right effect.

This seems like such an obvious requirement to make fog useful I think I’ve overlooked some blending mode or something.

Any pointers?