diff --git a/leksah.cabal b/leksah.cabal
--- a/leksah.cabal
+++ b/leksah.cabal
@@ -1,5 +1,5 @@
 name: leksah
-version: 0.13.4.0
+version: 0.13.4.1
 cabal-version: >=1.10
 build-type: Simple
 license: GPL
@@ -316,7 +316,7 @@
         ghc-options: -threaded
 
     hs-source-dirs: main
-    build-depends: leksah == 0.13.4.0, base >= 4.0.0.0 && <=4.8, gtk3 -any
+    build-depends: leksah == 0.13.4.1, base >= 4.0.0.0 && <=4.8, gtk3 -any
     if os(linux) && flag(loc)
         cpp-options: -DLOCALIZATION
         build-depends: hgettext, setlocale
@@ -335,7 +335,7 @@
     if !flag(webkit)
         buildable: False
     else
-        build-depends: leksah ==0.13.4.0, base >=4.0.0.0 && <=4.8,
+        build-depends: leksah ==0.13.4.1, base >=4.0.0.0 && <=4.8,
                        jsaddle -any, ghcjs-dom -any
         if flag(gtk3)
           build-depends: gtk3 >=0.12.4 && <0.13, gtksourceview3 >=0.10.0 && <0.13,
@@ -352,7 +352,7 @@
 
 test-suite tests
     build-depends: base >=4.0.0.0 && <4.8, Cabal >=1.6.0.1 && <1.19,
-                   QuickCheck >=2.4.2 && <2.7, leksah ==0.13.4.0,
+                   QuickCheck >=2.4.2 && <2.7, leksah ==0.13.4.1,
                    containers, ltk, leksah-server, hslogger,
                    transformers, glib, monad-loops
     if flag(gtk3)
diff --git a/src/IDE/Leksah.hs b/src/IDE/Leksah.hs
--- a/src/IDE/Leksah.hs
+++ b/src/IDE/Leksah.hs
@@ -212,6 +212,7 @@
     st          <-  unsafeInitGUIForThreadedRTS
     when rtsSupportsBoundThreads
         (sysMessage Normal "Linked with -threaded")
+    timeout <- timeoutAddFull (yield >> return True) priorityHigh 10
     mapM_ (sysMessage Normal) st
     initGtkRc
     dataDir       <- getDataDir
@@ -225,6 +226,7 @@
                                             prefsPath  <- getConfigFilePathForLoad standardPreferencesFilename Nothing dataDir
                                             prefs <- readPrefs prefsPath
                                             return $ Just prefs
+    timeoutRemove timeout
     postGUIAsync $ do
         case mbStartupPrefs of
             Nothing           -> return ()
@@ -240,7 +242,14 @@
   where
     loop :: Int -> Int -> IO ()
     loop delay n = do
-        quit <- loopn (n+2)
+        quit <- if n > 0
+                    then do
+                        timeout <- timeoutAddFull (yield >> return True) priorityHigh 10
+                        quit <- loopn (n+2)
+                        timeoutRemove timeout
+                        return quit
+                    else
+                        loopn (n+2)
         if quit
             then return ()
             else do
@@ -253,7 +262,7 @@
                         threadDelay delay
                         eventsPending >>= loop (if n > 0
                                                     then 50
-                                                    else min (delay+delay) 5000)
+                                                    else min (delay+delay) 50000)
     loopn :: Int -> IO Bool
     loopn 0 = return False
     loopn n = do
