It might not matter too much in this case, because of the rather low opacity setting in Overlay ... however:
Never, never ever make a strong blur by chaining blur() several times. Not only it is slow, but more seriously blur() is not precise enough. Especially chroma will get *very noticeable* distortions.
Use VariableBlur() instead, or simulate it through down&up-bicubicresize (not quite as accurate, but fairly fast):
Code:
function FastGauss(clip clp, float rx, float ry)
{ ox=clp.width()
oy=clp.height()
clp.bicubicresize(m4(ox/rx),m4(oy/ry)).bicubicresize(ox,oy,1,0)
}
function m4(float x) {x<16?16:int(round(x/4.0)*4)}
(Could be bloated much more ... multitap resizing for radii > 3.0 aso., but hey...)