The shader code itself is actually pretty simple, it uses a standard 2-pass gaussian blur.
But applying this to the entire screen would destroy performance, as the blur radius needs to be very large for this to look good.
The trick is to render the transparent pixels as solid pixels to a screen sized FBO, then down-scale this FBO to a smaller FBO, say 1/16 the original size.
Apply the 2-pass gaussian blur to the down-scaled FBO, I used a 21-sample gaussian blur.
Then use linear sampling and up-scale this FBO to screen size, you will now have a nice smooth blurred version of the transparent pixels with a large blur radius at 16x less GPU cost.
blend this FBO with the texture being drawn, voila