diff --git a/GTK.hs b/GTK.hs
--- a/GTK.hs
+++ b/GTK.hs
@@ -16,24 +16,22 @@
 
 import Graphics.UI.Gtk 
 import Graphics.UI.Gtk.Glade 
---import Graphics.UI.Gtk.Gdk.EventM 
 import Graphics.Rendering.Cairo (liftIO)        -- ???
 
---import Data.Char
---import Data.Maybe
 import Data.Time.Clock
+import Control.Monad (when)
 import Control.Concurrent
 
 
 ------------------------------------------------------
 
 data GUIState = GUIState
-    { infoLabel :: Label         
+    { infoLabel :: Label
     , timeLabel :: Label
     , frame     :: AspectFrame
     , table     :: DrawingArea 
     , window    :: Window
-    , event_     :: Event -> IO ()
+    , event_    :: Event -> IO ()
     , tSize     :: MVar BoardSize
 
     , setPref    :: Preferences -> IO (Maybe Preferences)
@@ -112,15 +110,15 @@
 getPosition g = do
     (x, y) <- widgetGetPointer (table g)
     calculatePosition (realToFrac x, realToFrac y) g
-    
+
 eventKey :: GUIState -> EventM EKey Bool
 eventKey gst = do
     k <- eventKeyName
     liftIO $ case k of
-        "Right" -> alwaysTrue $ event_ gst RightEvent  
-        "Left"  -> alwaysTrue $ event_ gst LeftEvent   
-        "Up"    -> alwaysTrue $ event_ gst UpEvent     
-        "Down"  -> alwaysTrue $ event_ gst DownEvent   
+        "Right" -> alwaysTrue $ event_ gst RightEvent
+        "Left"  -> alwaysTrue $ event_ gst LeftEvent
+        "Up"    -> alwaysTrue $ event_ gst UpEvent
+        "Down"  -> alwaysTrue $ event_ gst DownEvent
         _       -> return False
 
 eventMotion :: GUIState -> EventM EMotion ()
@@ -168,10 +166,14 @@
 handleResponse :: GUIState -> UTCTime -> Response -> IO ()
 handleResponse gst time e = case e of
     DrawSquares size sl -> do
-        _ <- swapMVar (tSize gst) size       -- ha megváltozott törölni a képernyőt!!
+        old_size <- takeMVar $ tSize gst
+        putMVar (tSize gst) size
         postGUISync $ redrawSigns gst size sl
         waitTill (addUTCTime 0.02 time)
         event_ gst DrawingDone
+        when (old_size /= size) $ do
+            set (frame gst) [aspectFrameRatio := fromIntegral (xSize size) / fromIntegral (ySize size)]
+            event_ gst UpdateTable
 
     ShowTime s -> do
         postGUISync $ labelSetText (timeLabel gst) $ show s
diff --git a/Transition/Response.hs b/Transition/Response.hs
--- a/Transition/Response.hs
+++ b/Transition/Response.hs
@@ -92,6 +92,7 @@
  where
     g = game st
 
+    diff :: Eq a => [a] -> [a]
     diff [x, y] | x == y = []
     diff l = l
 
diff --git a/minesweeper.cabal b/minesweeper.cabal
--- a/minesweeper.cabal
+++ b/minesweeper.cabal
@@ -1,5 +1,5 @@
 name:                minesweeper
-version:             0.9
+version:             0.9.1
 category:            Game
 synopsis:            Minesweeper game which is always solvable without guessing
 description:
@@ -35,20 +35,19 @@
     CPP
 
   build-depends:
-    base >= 3 && < 5, 
-    containers >= 0.3 && < 0.4,
+    base >= 3 && < 4.4,
+    containers >= 0.3 && < 0.5,
     time >= 1.2 && < 1.3,
     random >= 1.0 && < 1.1,
  --    mersenne-random-pure64 == 0.2.*,
-    directory >= 1.0 && < 1.1,
-    filepath >= 1.1 && < 1.2,
+    directory >= 1.0 && < 1.2,
+    filepath >= 1.1 && < 1.3,
     binary >= 0.5 && < 0.6,
     binary-generic >= 0.2 && < 0.3,
     bytestring >= 0.9 && < 0.10,
- --    derive ,
-    gtk >= 0.11 && < 0.12,
-    cairo >= 0.11 && < 0.12,
-    glade >= 0.11 && < 0.12
+    gtk >= 0.11 && < 0.13,
+    cairo >= 0.11 && < 0.13,
+    glade >= 0.11 && < 0.13
 
   if flag(tests)
     build-depends:
