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.