GM redraws the screen each step, and each step it calls the draw event at the right time for you to draw what you want and it be seen. So it does draw it, however only for such a small time you can't see it. Although you'd think it would stay with no background colour, well, it doesn't, as the window is still refreshing each step.
You can disable the redrawing of the screen automatically by using set_automatic_draw(0), and then use screen_refresh() after each draw command.