Even if there might be an engine bug, it is wrong to modify the state in on_draw() events (like changing savegame values). The on_draw() calls are not guaranteed, some of them are skipped sometimes if the machine is too slow. A quest should still work the same independently of how often the screen is redrawn.
On the contrary, on_update() is called exactly once per frame.
Additionally, creating surfaces or sprites in on_draw() is also wrong, because for better performance you should create them once rather than at each frame. However, it should still work, it is just not great for performance.