It's not a glitch. It's just blending.
If you want to make an area of a surface opaque without altering the colors, just set the blend mode to bm_add and draw in black. In your case, you'd do whatever overlaying you're doing now, and at the end of it all, set the blend mode to bm_add and draw a full-black circle in the area you want to keep.
-IMP
Omg, thanks! I had no idea that was possible. Thanks so much 
Needless to say - it worked
EDIT:
When I said glitch, I meant it resulted in my game being glitchy. I don't know what it's for though, and why it's different from normal drawing, but it's probably there for a reason
It's only different from "normal" drawing because your window is opaque. The blending on a surface and the blending directly on the window are exactly the same, the only difference being that
after the blending the screen contents are boosted to 100% opacity since that's all it can display. A surface doesn't have that limitation and can support full opacity from 0-1.
The normal blending mode, when drawing a color <Rs, Gs, Bs, As> onto a color <Rd, Gd, Bd, Ad>, combines them this way:
<NewR, NewG, NewB, NewA> = As * <Rs, Gs, Bs, As> + (1-As) * <Rd, Gd, Bd, Ad>
Notice that the source alpha affects the final alpha? That's what's happening here. On the screen, that doesn't matter, since the alpha is always pushed back to 1, but on a surface, whatever resulting alpha you get there stays in the pixel.
The bm_add mode does this:
<NewR, NewG, NewB, NewA> = <Rs, Gs, Bs, As> + <Rd, Gd, Bd, Ad>
So, since opaque black is <0,0,0,1>, you'll notice adding it won't affect the color but will push the alpha back up to 1 in the end.
-IMP