Quick answer: Blend mode is global GPU state, not per-object. Whatever you set stays set for every subsequent draw that frame. Always reset with gpu_set_blendmode(bm_normal) after your special draw.
An object draws a glow with gpu_set_blendmode(bm_add). Suddenly the HUD, other sprites, everything drawn after it looks washed out — the additive mode leaked.
Blend Mode Is Global and Persistent
GameMaker draws objects in depth order within one frame. gpu_set_blendmode changes a global state that persists until something changes it again. Set it and forget to reset, and every later draw inherits it.
Set, Draw, Reset
// Draw event
gpu_set_blendmode(bm_add);
draw_sprite(spr_glow, 0, x, y);
gpu_set_blendmode(bm_normal); // ALWAYS reset
Treat it like a bracket: open with the special mode, close with bm_normal. Same for gpu_set_blendmode_ext, gpu_set_blendenable, color write masks, etc.
Reset Even on Early Exit
If the Draw event can exit early after setting the blend mode, reset before the exit too — or you leak the mode on that path.
A Safety Net
For peace of mind, a single controller object at the highest depth can reset all GPU state at the start of its Draw event — but fixing the leak at the source is better than papering over it.
Verifying
The glow renders additive; the HUD and everything after it render normally. No washed-out frame. Toggling the glow on/off doesn’t affect other draws.
“Blend mode is global state. Bracket every change with a reset to bm_normal.”
The same discipline applies to gpu_set_alphatestenable, gpu_set_cullmode, and shader_set — set it, use it, reset it.