My way of doing it, which is admittedly somewhat slow, is to clear the background to RGB(255,0,255), rawdraw all particles without translucency, creating a DynamicSprite from the background, restore the background and assigning the DynamicSprite to a near-fullscreen transparent GUI. Alternately you could RawDraw some of the drops directly to the background for a sense of depth (player walks in front of some and behind others).
If CJ would only allow tint/light manipulation of DynamicSprites a (CPU wise) faster solution would be to RawDraw everything to screen based on baselines, including characters and objects.