Short answer: Do not put too much processing into event handling routines...
Longer: ...especially MoiseMove, because that will stall the event queue...
There might be some differences between event queue in gtk and Win32 that make Linux work better here, but the fundamental reason is the same and the code simply should not do what it is doing. You might get better results by adding Sync after SetImage, but still this should be coded differently.