diff --git a/HGamer3D.cabal b/HGamer3D.cabal
--- a/HGamer3D.cabal
+++ b/HGamer3D.cabal
@@ -1,5 +1,5 @@
 Name:                HGamer3D
-Version:             0.3.2
+Version:             0.3.3
 Synopsis:            A Game Engine for the Haskell Programmer
 Description:         
 	HGamer3D is a game engine for developing 3D games in the programming 
diff --git a/HGamer3D.hs b/HGamer3D.hs
--- a/HGamer3D.hs
+++ b/HGamer3D.hs
@@ -46,16 +46,18 @@
   exitHGamer3D g3ds guis = do 
      exitGraphics3D g3ds
 
+
+  -- the game loops works in a way, that window events are much faster processed then 
+  -- update of rendering -> all events needs to be cleared, then next renderOneFrame is processed
+
   loopHGamer3D :: Graphics3DSystem -> GUISystem -> IO (Maybe HG3DEvent, Bool)
   loopHGamer3D g3ds guis = do
 
-        renderOneFrame g3ds
-
         -- this one is quite tricky, on Linux we need to call the message loop in addition to WinEvent!
         if SI.os /= "mingw32" then graphics3DPumpWindowMessages else return ()
         i <- checkQuitReceived
+
         evt <- pollWinEvent
-        
         case evt of
            Just sdlEvt -> do
                              injectWinEventToGUI guis sdlEvt  -- inject event into gui
@@ -64,7 +66,8 @@
                   gevts <- pollGUIEvents guis
                   if length gevts > 0 then
                      return (Just (EventGUI gevts), (i == 1) )
-                     else
+                     else do
+                        renderOneFrame g3ds
                         return (Nothing, (i == 1) )
 
 
