diff --git a/android/assets/text/application/application_cs.properties b/android/assets/text/application/application_cs.properties
index 7d3d81fb8a70412679d4fbf7ef1e449b1f5fca07..095741916d6899b545f9b09cd664d333bf3724e3 100644
--- a/android/assets/text/application/application_cs.properties
+++ b/android/assets/text/application/application_cs.properties
@@ -9,6 +9,7 @@ mainmenu_encyclopedia=Encyklopedie
 mainmenu_preferences=NastavenĂ­
 mainmenu_about=O aplikaci
 mainmenu_logout=Odhlásit
+mainmenu_screendebug=Debug Screen
 
 gamedifficulty_easy=Lehká
 gamedifficulty_medium=Střední
diff --git a/android/assets/text/application/application_sk.properties b/android/assets/text/application/application_sk.properties
index b26613dd35db570e2a33845fb550aae6389dbb2e..ed092ed093b5b0a4f3ffe2c11c2ec8ea941ad0e4 100644
--- a/android/assets/text/application/application_sk.properties
+++ b/android/assets/text/application/application_sk.properties
@@ -9,6 +9,7 @@ mainmenu_encyclopedia=Encyklopédia
 mainmenu_preferences=Nastavenie
 mainmenu_about=O aplikácií
 mainmenu_logout=Odhlásiť
+mainmenu_screendebug=Debug Screen
 
 gamedifficulty_easy=Ľahká
 gamedifficulty_medium=Stredná
diff --git a/core/assets/common/screen/gamemenu/overlay.png b/core/assets/common/screen/debug/black.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/overlay.png
rename to core/assets/common/screen/debug/black.png
diff --git a/core/assets/common/screen/debug/blue.png b/core/assets/common/screen/debug/blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..c3870f917f4968a8db714a3628a502e7fc310841
Binary files /dev/null and b/core/assets/common/screen/debug/blue.png differ
diff --git a/core/assets/common/screen/debug/checker.png b/core/assets/common/screen/debug/checker.png
new file mode 100644
index 0000000000000000000000000000000000000000..3b6cf9854d9be63a361d443eb0bbca60813714b2
Binary files /dev/null and b/core/assets/common/screen/debug/checker.png differ
diff --git a/core/assets/common/screen/debug/pink.png b/core/assets/common/screen/debug/pink.png
new file mode 100644
index 0000000000000000000000000000000000000000..26eb49ed2d2bc4562b4b7bf96c20f6d45268bebe
Binary files /dev/null and b/core/assets/common/screen/debug/pink.png differ
diff --git a/core/assets/common/screen/debug/point.png b/core/assets/common/screen/debug/point.png
new file mode 100644
index 0000000000000000000000000000000000000000..e5328a7b3a237e8774cda4b5fd7132826a4c5a4f
Binary files /dev/null and b/core/assets/common/screen/debug/point.png differ
diff --git a/core/assets/common/screen/debug/red.png b/core/assets/common/screen/debug/red.png
new file mode 100644
index 0000000000000000000000000000000000000000..5bc4cc83c9b5d765531cf3061344e26ba428e430
Binary files /dev/null and b/core/assets/common/screen/debug/red.png differ
diff --git a/core/assets/common/screen/debug/yellow.png b/core/assets/common/screen/debug/yellow.png
new file mode 100644
index 0000000000000000000000000000000000000000..de8ab0bd398bc00d945e679e6a301d971caa7f2f
Binary files /dev/null and b/core/assets/common/screen/debug/yellow.png differ
diff --git a/core/assets/common/screen/gamemenu/bankovniloupez_back.png b/core/assets/common/screen/gamemenu/gfx/bankovniloupez_back.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/bankovniloupez_back.png
rename to core/assets/common/screen/gamemenu/gfx/bankovniloupez_back.png
diff --git a/core/assets/common/screen/gamemenu/bankovniloupez_fore.png b/core/assets/common/screen/gamemenu/gfx/bankovniloupez_fore.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/bankovniloupez_fore.png
rename to core/assets/common/screen/gamemenu/gfx/bankovniloupez_fore.png
diff --git a/core/assets/common/screen/gamemenu/bankovniloupez_mid.png b/core/assets/common/screen/gamemenu/gfx/bankovniloupez_mid.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/bankovniloupez_mid.png
rename to core/assets/common/screen/gamemenu/gfx/bankovniloupez_mid.png
diff --git a/core/assets/common/screen/gamemenu/clickablemap.png b/core/assets/common/screen/gamemenu/gfx/clickablemap.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/clickablemap.png
rename to core/assets/common/screen/gamemenu/gfx/clickablemap.png
diff --git a/core/assets/common/screen/gamemenu/desk.png b/core/assets/common/screen/gamemenu/gfx/desk.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/desk.png
rename to core/assets/common/screen/gamemenu/gfx/desk.png
diff --git a/core/assets/common/screen/gamemenu/difficultyseekbar_background.png b/core/assets/common/screen/gamemenu/gfx/difficultyseekbar_background.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/difficultyseekbar_background.png
rename to core/assets/common/screen/gamemenu/gfx/difficultyseekbar_background.png
diff --git a/core/assets/common/screen/gamemenu/difficultyseekbar_thumb.png b/core/assets/common/screen/gamemenu/gfx/difficultyseekbar_thumb.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/difficultyseekbar_thumb.png
rename to core/assets/common/screen/gamemenu/gfx/difficultyseekbar_thumb.png
diff --git a/core/assets/common/screen/gamemenu/difficultyseekbar_thumb_easy.png b/core/assets/common/screen/gamemenu/gfx/difficultyseekbar_thumb_easy.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/difficultyseekbar_thumb_easy.png
rename to core/assets/common/screen/gamemenu/gfx/difficultyseekbar_thumb_easy.png
diff --git a/core/assets/common/screen/gamemenu/difficultyseekbar_thumb_hard.png b/core/assets/common/screen/gamemenu/gfx/difficultyseekbar_thumb_hard.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/difficultyseekbar_thumb_hard.png
rename to core/assets/common/screen/gamemenu/gfx/difficultyseekbar_thumb_hard.png
diff --git a/core/assets/common/screen/gamemenu/difficultyseekbar_thumb_medium.png b/core/assets/common/screen/gamemenu/gfx/difficultyseekbar_thumb_medium.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/difficultyseekbar_thumb_medium.png
rename to core/assets/common/screen/gamemenu/gfx/difficultyseekbar_thumb_medium.png
diff --git a/core/assets/common/screen/gamemenu/encyclopedia_pressed.png b/core/assets/common/screen/gamemenu/gfx/encyclopedia_pressed.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/encyclopedia_pressed.png
rename to core/assets/common/screen/gamemenu/gfx/encyclopedia_pressed.png
diff --git a/core/assets/common/screen/gamemenu/halloffame_pressed.png b/core/assets/common/screen/gamemenu/gfx/halloffame_pressed.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/halloffame_pressed.png
rename to core/assets/common/screen/gamemenu/gfx/halloffame_pressed.png
diff --git a/core/assets/common/screen/gamemenu/helpbutton_pressed.png b/core/assets/common/screen/gamemenu/gfx/helpbutton_pressed.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/helpbutton_pressed.png
rename to core/assets/common/screen/gamemenu/gfx/helpbutton_pressed.png
diff --git a/core/assets/common/screen/gamemenu/helpbutton_unpressed.png b/core/assets/common/screen/gamemenu/gfx/helpbutton_unpressed.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/helpbutton_unpressed.png
rename to core/assets/common/screen/gamemenu/gfx/helpbutton_unpressed.png
diff --git a/core/assets/common/screen/gamemenu/helplayer_clickablemap.png b/core/assets/common/screen/gamemenu/gfx/helplayer_clickablemap.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/helplayer_clickablemap.png
rename to core/assets/common/screen/gamemenu/gfx/helplayer_clickablemap.png
diff --git a/core/assets/common/screen/gamemenu/nocnisledovani_back.png b/core/assets/common/screen/gamemenu/gfx/nocnisledovani_back.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/nocnisledovani_back.png
rename to core/assets/common/screen/gamemenu/gfx/nocnisledovani_back.png
diff --git a/core/assets/common/screen/gamemenu/nocnisledovani_fore.png b/core/assets/common/screen/gamemenu/gfx/nocnisledovani_fore.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/nocnisledovani_fore.png
rename to core/assets/common/screen/gamemenu/gfx/nocnisledovani_fore.png
diff --git a/core/assets/common/screen/gamemenu/nocnisledovani_mid.png b/core/assets/common/screen/gamemenu/gfx/nocnisledovani_mid.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/nocnisledovani_mid.png
rename to core/assets/common/screen/gamemenu/gfx/nocnisledovani_mid.png
diff --git a/core/assets/common/screen/gamemenu/gfx/overlay.png b/core/assets/common/screen/gamemenu/gfx/overlay.png
new file mode 100644
index 0000000000000000000000000000000000000000..d8fc30a3129c1ed8bf6f5c1ffb25a031c3e894ea
Binary files /dev/null and b/core/assets/common/screen/gamemenu/gfx/overlay.png differ
diff --git a/core/assets/common/screen/gamemenu/potme_back.png b/core/assets/common/screen/gamemenu/gfx/potme_back.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/potme_back.png
rename to core/assets/common/screen/gamemenu/gfx/potme_back.png
diff --git a/core/assets/common/screen/gamemenu/potme_fore.png b/core/assets/common/screen/gamemenu/gfx/potme_fore.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/potme_fore.png
rename to core/assets/common/screen/gamemenu/gfx/potme_fore.png
diff --git a/core/assets/common/screen/gamemenu/potme_mid.png b/core/assets/common/screen/gamemenu/gfx/potme_mid.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/potme_mid.png
rename to core/assets/common/screen/gamemenu/gfx/potme_mid.png
diff --git a/core/assets/common/screen/gamemenu/profile_pressed.png b/core/assets/common/screen/gamemenu/gfx/profile_pressed.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/profile_pressed.png
rename to core/assets/common/screen/gamemenu/gfx/profile_pressed.png
diff --git a/core/assets/common/screen/gamemenu/pronasledovani_back.png b/core/assets/common/screen/gamemenu/gfx/pronasledovani_back.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/pronasledovani_back.png
rename to core/assets/common/screen/gamemenu/gfx/pronasledovani_back.png
diff --git a/core/assets/common/screen/gamemenu/pronasledovani_fore.png b/core/assets/common/screen/gamemenu/gfx/pronasledovani_fore.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/pronasledovani_fore.png
rename to core/assets/common/screen/gamemenu/gfx/pronasledovani_fore.png
diff --git a/core/assets/common/screen/gamemenu/pronasledovani_mid.png b/core/assets/common/screen/gamemenu/gfx/pronasledovani_mid.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/pronasledovani_mid.png
rename to core/assets/common/screen/gamemenu/gfx/pronasledovani_mid.png
diff --git a/core/assets/common/screen/gamemenu/statistics_pressed.png b/core/assets/common/screen/gamemenu/gfx/statistics_pressed.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/statistics_pressed.png
rename to core/assets/common/screen/gamemenu/gfx/statistics_pressed.png
diff --git a/core/assets/common/screen/gamemenu/streetdoor_pressed.png b/core/assets/common/screen/gamemenu/gfx/streetdoor_pressed.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/streetdoor_pressed.png
rename to core/assets/common/screen/gamemenu/gfx/streetdoor_pressed.png
diff --git a/core/assets/common/screen/gamemenu/strelnice_back.png b/core/assets/common/screen/gamemenu/gfx/strelnice_back.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/strelnice_back.png
rename to core/assets/common/screen/gamemenu/gfx/strelnice_back.png
diff --git a/core/assets/common/screen/gamemenu/strelnice_fore.png b/core/assets/common/screen/gamemenu/gfx/strelnice_fore.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/strelnice_fore.png
rename to core/assets/common/screen/gamemenu/gfx/strelnice_fore.png
diff --git a/core/assets/common/screen/gamemenu/strelnice_mid.png b/core/assets/common/screen/gamemenu/gfx/strelnice_mid.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/strelnice_mid.png
rename to core/assets/common/screen/gamemenu/gfx/strelnice_mid.png
diff --git a/core/assets/common/screen/gamemenu/unos_back.png b/core/assets/common/screen/gamemenu/gfx/unos_back.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/unos_back.png
rename to core/assets/common/screen/gamemenu/gfx/unos_back.png
diff --git a/core/assets/common/screen/gamemenu/unos_fore.png b/core/assets/common/screen/gamemenu/gfx/unos_fore.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/unos_fore.png
rename to core/assets/common/screen/gamemenu/gfx/unos_fore.png
diff --git a/core/assets/common/screen/gamemenu/unos_mid.png b/core/assets/common/screen/gamemenu/gfx/unos_mid.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/unos_mid.png
rename to core/assets/common/screen/gamemenu/gfx/unos_mid.png
diff --git a/core/assets/common/screen/gamemenu/vignetting.png b/core/assets/common/screen/gamemenu/gfx/vignetting.png
similarity index 100%
rename from core/assets/common/screen/gamemenu/vignetting.png
rename to core/assets/common/screen/gamemenu/gfx/vignetting.png
diff --git a/core/assets/cs/screen/gamemenu/bankovniloupez_startbutton.png b/core/assets/cs/screen/gamemenu/gfx/bankovniloupez_startbutton.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/bankovniloupez_startbutton.png
rename to core/assets/cs/screen/gamemenu/gfx/bankovniloupez_startbutton.png
diff --git a/core/assets/cs/screen/gamemenu/bankovniloupez_startbutton_pressed.png b/core/assets/cs/screen/gamemenu/gfx/bankovniloupez_startbutton_pressed.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/bankovniloupez_startbutton_pressed.png
rename to core/assets/cs/screen/gamemenu/gfx/bankovniloupez_startbutton_pressed.png
diff --git a/core/assets/cs/screen/gamemenu/bankovniloupez_title.png b/core/assets/cs/screen/gamemenu/gfx/bankovniloupez_title.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/bankovniloupez_title.png
rename to core/assets/cs/screen/gamemenu/gfx/bankovniloupez_title.png
diff --git a/core/assets/cs/screen/gamemenu/helplayer.png b/core/assets/cs/screen/gamemenu/gfx/helplayer.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/helplayer.png
rename to core/assets/cs/screen/gamemenu/gfx/helplayer.png
diff --git a/core/assets/cs/screen/gamemenu/nocnisledovani_startbutton.png b/core/assets/cs/screen/gamemenu/gfx/nocnisledovani_startbutton.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/nocnisledovani_startbutton.png
rename to core/assets/cs/screen/gamemenu/gfx/nocnisledovani_startbutton.png
diff --git a/core/assets/cs/screen/gamemenu/nocnisledovani_startbutton_pressed.png b/core/assets/cs/screen/gamemenu/gfx/nocnisledovani_startbutton_pressed.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/nocnisledovani_startbutton_pressed.png
rename to core/assets/cs/screen/gamemenu/gfx/nocnisledovani_startbutton_pressed.png
diff --git a/core/assets/cs/screen/gamemenu/nocnisledovani_title.png b/core/assets/cs/screen/gamemenu/gfx/nocnisledovani_title.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/nocnisledovani_title.png
rename to core/assets/cs/screen/gamemenu/gfx/nocnisledovani_title.png
diff --git a/core/assets/cs/screen/gamemenu/office.jpg b/core/assets/cs/screen/gamemenu/gfx/office.jpg
similarity index 100%
rename from core/assets/cs/screen/gamemenu/office.jpg
rename to core/assets/cs/screen/gamemenu/gfx/office.jpg
diff --git a/core/assets/cs/screen/gamemenu/potme_startbutton.png b/core/assets/cs/screen/gamemenu/gfx/potme_startbutton.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/potme_startbutton.png
rename to core/assets/cs/screen/gamemenu/gfx/potme_startbutton.png
diff --git a/core/assets/cs/screen/gamemenu/potme_startbutton_pressed.png b/core/assets/cs/screen/gamemenu/gfx/potme_startbutton_pressed.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/potme_startbutton_pressed.png
rename to core/assets/cs/screen/gamemenu/gfx/potme_startbutton_pressed.png
diff --git a/core/assets/cs/screen/gamemenu/potme_title.png b/core/assets/cs/screen/gamemenu/gfx/potme_title.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/potme_title.png
rename to core/assets/cs/screen/gamemenu/gfx/potme_title.png
diff --git a/core/assets/cs/screen/gamemenu/pronasledovani_startbutton.png b/core/assets/cs/screen/gamemenu/gfx/pronasledovani_startbutton.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/pronasledovani_startbutton.png
rename to core/assets/cs/screen/gamemenu/gfx/pronasledovani_startbutton.png
diff --git a/core/assets/cs/screen/gamemenu/pronasledovani_startbutton_pressed.png b/core/assets/cs/screen/gamemenu/gfx/pronasledovani_startbutton_pressed.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/pronasledovani_startbutton_pressed.png
rename to core/assets/cs/screen/gamemenu/gfx/pronasledovani_startbutton_pressed.png
diff --git a/core/assets/cs/screen/gamemenu/pronasledovani_title.png b/core/assets/cs/screen/gamemenu/gfx/pronasledovani_title.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/pronasledovani_title.png
rename to core/assets/cs/screen/gamemenu/gfx/pronasledovani_title.png
diff --git a/core/assets/cs/screen/gamemenu/strelnice_startbutton.png b/core/assets/cs/screen/gamemenu/gfx/strelnice_startbutton.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/strelnice_startbutton.png
rename to core/assets/cs/screen/gamemenu/gfx/strelnice_startbutton.png
diff --git a/core/assets/cs/screen/gamemenu/strelnice_startbutton_pressed.png b/core/assets/cs/screen/gamemenu/gfx/strelnice_startbutton_pressed.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/strelnice_startbutton_pressed.png
rename to core/assets/cs/screen/gamemenu/gfx/strelnice_startbutton_pressed.png
diff --git a/core/assets/cs/screen/gamemenu/strelnice_title.png b/core/assets/cs/screen/gamemenu/gfx/strelnice_title.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/strelnice_title.png
rename to core/assets/cs/screen/gamemenu/gfx/strelnice_title.png
diff --git a/core/assets/cs/screen/gamemenu/unos_startbutton.png b/core/assets/cs/screen/gamemenu/gfx/unos_startbutton.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/unos_startbutton.png
rename to core/assets/cs/screen/gamemenu/gfx/unos_startbutton.png
diff --git a/core/assets/cs/screen/gamemenu/unos_startbutton_pressed.png b/core/assets/cs/screen/gamemenu/gfx/unos_startbutton_pressed.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/unos_startbutton_pressed.png
rename to core/assets/cs/screen/gamemenu/gfx/unos_startbutton_pressed.png
diff --git a/core/assets/cs/screen/gamemenu/unos_title.png b/core/assets/cs/screen/gamemenu/gfx/unos_title.png
similarity index 100%
rename from core/assets/cs/screen/gamemenu/unos_title.png
rename to core/assets/cs/screen/gamemenu/gfx/unos_title.png
diff --git a/core/assets/sk/screen/gamemenu/screen_gamemenu_startmenu_background.jpg b/core/assets/sk/screen/gamemenu/gfx/screen_gamemenu_startmenu_background.jpg
similarity index 100%
rename from core/assets/sk/screen/gamemenu/screen_gamemenu_startmenu_background.jpg
rename to core/assets/sk/screen/gamemenu/gfx/screen_gamemenu_startmenu_background.jpg
diff --git a/core/src/cz/nic/tablexia/TablexiaApplication.java b/core/src/cz/nic/tablexia/TablexiaApplication.java
index 2f4df4f53e13b3781c391dfbcb5fad587f0bd447..f03c247fc1c3bebe01759e5a93f7343ff7f536cc 100644
--- a/core/src/cz/nic/tablexia/TablexiaApplication.java
+++ b/core/src/cz/nic/tablexia/TablexiaApplication.java
@@ -37,9 +37,9 @@ public abstract class TablexiaApplication implements ApplicationListener {
 
     private AbstractTablexiaScreen<?> lastScreen;
     private AbstractTablexiaScreen<?> screen;
-    private InputMultiplexer          inputMultiplexer;
-    private DebugInfo                 debugInfo;
-    private Stage                     stage;
+    private InputMultiplexer inputMultiplexer;
+    private DebugInfo debugInfo;
+    private Stage stage;
 
 
     public Stage getStage() {
@@ -80,7 +80,7 @@ public abstract class TablexiaApplication implements ApplicationListener {
 
     @Override
     public void create() {
-        stage = new Stage(new XFillViewport());
+        stage = new Stage();
         inputMultiplexer = new InputMultiplexer(stage);
         Gdx.input.setInputProcessor(inputMultiplexer);
         prepareDebugInfo();
@@ -108,6 +108,10 @@ public abstract class TablexiaApplication implements ApplicationListener {
         if (lastScreen != null) lastScreen.resize(width, height);
         if (screen != null) screen.resize(width, height);
         stage.getViewport().update(width, height, true);
+        // keep debug info on edges of the screen
+        if (TablexiaSettings.getInstance().isDebug()) {
+            debugInfo.onResize();
+        }
     }
 
 
@@ -115,7 +119,7 @@ public abstract class TablexiaApplication implements ApplicationListener {
 
     private void prepareDebugInfo() {
         if (TablexiaSettings.getInstance().isDebug()) {
-            debugInfo = new DebugInfo(getStage().getWidth(), getStage().getHeight());
+            debugInfo = new DebugInfo(); // TODO probably deprecated creating specific size
             getStage().addActor(debugInfo);
         }
     }
@@ -190,27 +194,27 @@ public abstract class TablexiaApplication implements ApplicationListener {
             screen = newScreen;
             screenTransaction.processTransaction(stage, lastScreen, newScreen,
 
-                new Runnable() {
+                    new Runnable() {
 
-                    @Override
-                    public void run() {
-                        processNewScreen(screen);
-                    }
-                },
+                        @Override
+                        public void run() {
+                            processNewScreen(screen);
+                        }
+                    },
 
-                new Runnable() {
-                    @Override
-                    public void run() {
-                        processLastScreen();
-                    }
-                },
+                    new Runnable() {
+                        @Override
+                        public void run() {
+                            processLastScreen();
+                        }
+                    },
 
-                new Runnable() {
-                    @Override
-                    public void run() {
-                        newScreen.performScreenVisible();
-                    }
-                });
+                    new Runnable() {
+                        @Override
+                        public void run() {
+                            newScreen.performScreenVisible();
+                        }
+                    });
         }
     }
 
@@ -271,8 +275,8 @@ public abstract class TablexiaApplication implements ApplicationListener {
     private static class MoveRightAnimation implements cz.nic.tablexia.TablexiaApplication.ScreenTransaction.ScreenTransactionImplementation {
 
         protected float newScreenMoveFrom = -Gdx.graphics.getWidth();
-        protected float newScreenMoveTo   = 0;
-        protected float lastScreenMoveTo  = Gdx.graphics.getWidth();
+        protected float newScreenMoveTo = 0;
+        protected float lastScreenMoveTo = Gdx.graphics.getWidth();
 
         @Override
         public void processTransaction(Stage stage, final AbstractTablexiaScreen<?> lastScreen, final AbstractTablexiaScreen<?> newScreen, Runnable newScreenHandler, final Runnable lastScreenHandler, final Runnable finishHandler) {
diff --git a/core/src/cz/nic/tablexia/debug/DebugInfo.java b/core/src/cz/nic/tablexia/debug/DebugInfo.java
index 2c6f1f8b946032356266b0ba541a12f32b1671d2..462f5c979dd03434f396ff6deda876e7d45bf5e0 100644
--- a/core/src/cz/nic/tablexia/debug/DebugInfo.java
+++ b/core/src/cz/nic/tablexia/debug/DebugInfo.java
@@ -29,41 +29,38 @@ import static com.badlogic.gdx.scenes.scene2d.actions.Actions.alpha;
 
 /**
  * Debug info container
- * 
- * @author Matyáš Latner
  *
+ * @author Matyáš Latner
  */
 public class DebugInfo extends Table implements Disposable {
 
-	private static class DebugInfoComponent extends Table {
-		
-		private Map<String, Label>  infoLabelMap;
-		private LabelStyle 			labelStyle;
-
-		public DebugInfoComponent(float width, float height) {
-			infoLabelMap = new HashMap<String, Label>();
-			setBounds(0, 0, width, height);
-			setBackground(new TextureRegionDrawable(new TextureRegion(new ColorTexture(1, 1, BACKGROUND_COLOR))));
-			addAction(alpha(BACKGROUND_ALPHA));
-			
-			labelStyle = new LabelStyle(new BitmapFont(), FONT_COLOR);
-		}
-		
-		public synchronized void setInfoValue(String infoKey, String infoValue) {
-			Label label = infoLabelMap.get(infoKey);
-			if (label == null) {
-				createInfoLabel(infoKey, infoValue);
-			} else {
-				label.setText(infoKey + KEY_COLON + infoValue);
-			}
-		}
-		
-		private void clean() {
-			clearChildren();
-			infoLabelMap.clear();
-		}
-		
-		private void createInfoLabel(String infoKey, String infoValue) {
+    private static class DebugInfoComponent extends Table {
+
+        private Map<String, Label> infoLabelMap;
+        private LabelStyle labelStyle;
+
+        public DebugInfoComponent() {
+            infoLabelMap = new HashMap<String, Label>();
+            setBackground(new TextureRegionDrawable(new TextureRegion(new ColorTexture(1, 1, BACKGROUND_COLOR))));
+            addAction(alpha(BACKGROUND_ALPHA));
+            labelStyle = new LabelStyle(new BitmapFont(), FONT_COLOR);
+        }
+
+        public synchronized void setInfoValue(String infoKey, String infoValue) {
+            Label label = infoLabelMap.get(infoKey);
+            if (label == null) {
+                createInfoLabel(infoKey, infoValue);
+            } else {
+                label.setText(infoKey + KEY_COLON + infoValue);
+            }
+        }
+
+        private void clean() {
+            clearChildren();
+            infoLabelMap.clear();
+        }
+
+        private void createInfoLabel(String infoKey, String infoValue) {
             Label infoLabel = new Label(infoKey + KEY_COLON + infoValue, labelStyle);
             infoLabelMap.put(infoKey, infoLabel);
             clearChildren();
@@ -74,88 +71,90 @@ public class DebugInfo extends Table implements Disposable {
                     cell.pad(0, INFO_PADDING, 0, 0);
                 }
             }
-		}
-		
-		@Override
-		public void setSize(float width, float height) {
-			super.setSize(width, height);
-		}
-		
-	}
-	
-	
-	private static final String NATIVE_HEAP 	= "Native Heap";
-	private static final String JAVA_HEAP 		= "Java Heap";
-	private static final String FPS 			= "FPS";
-    private static final String LOCALE 			= "Locale";
-    private static final String VERSION			= "Version";
-	
-	private static final String SCREEN_NAME 	= "Screen Name";
-	
-	private static final int 	INFO_PADDING	= 20;
-	private static final int 	MB_SIZE 		= 1000000;
-	private static final String UNIT_MB 		= " MB";
-	private static final String KEY_COLON 		= ": ";
-	
-	private static final Color FONT_COLOR 		= Color.WHITE;
-	private static final Color BACKGROUND_COLOR	= Color.BLACK;
-	private static final float BACKGROUND_ALPHA = 0.5f;
-	
-	private DebugInfoComponent applicationDebugInfo;
-	private DebugInfoComponent screenNameInfo;
-	private DebugInfoComponent screenDebugInfo;
-	
-	private ConcurrentLinkedQueue<ScreenInfoEvent> screenDebugInfoQueue = new ConcurrentLinkedQueue<ScreenInfoEvent>();
-	private ConcurrentLinkedQueue<ScreenChangedEvent> screenNameInfoQueue = new ConcurrentLinkedQueue<ScreenChangedEvent>();
-
-	public DebugInfo(float width, float height) {
-		setBounds(0, 0, width, height);
-		ApplicationBus.getInstance().subscribe(this);
-		
-		applicationDebugInfo = new DebugInfoComponent(width, height);
-		screenNameInfo = new DebugInfoComponent(width, height);
-		screenDebugInfo = new DebugInfoComponent(width, height);
-		
-		Table topTable = new Table();
-		topTable.add(screenNameInfo).expandX();
-		topTable.add(screenDebugInfo).pad(0, INFO_PADDING, 0, 0).expandX();
-		add(topTable);
-		row();
-		add(new Container<Actor>()).expand();
-		row();
-		add(applicationDebugInfo).expandX();
-	}
-	
-	public void update() {
+        }
+
+        @Override
+        public void setSize(float width, float height) {
+            super.setSize(width, height);
+        }
+    }
+
+
+    private static final String NATIVE_HEAP = "Native Heap";
+    private static final String JAVA_HEAP = "Java Heap";
+    private static final String FPS = "FPS";
+    private static final String LOCALE = "Locale";
+    private static final String VERSION = "Version";
+
+    private static final String SCREEN_NAME = "Screen Name";
+
+    private static final int INFO_PADDING = 20;
+    private static final int MB_SIZE = 1000000;
+    private static final String UNIT_MB = " MB";
+    private static final String KEY_COLON = ": ";
+
+    private static final Color FONT_COLOR = Color.WHITE;
+    private static final Color BACKGROUND_COLOR = Color.BLACK;
+    private static final float BACKGROUND_ALPHA = 0.5f;
+
+    private DebugInfoComponent applicationDebugInfo;
+    private DebugInfoComponent screenNameInfo;
+    private DebugInfoComponent screenDebugInfo;
+
+    private ConcurrentLinkedQueue<ScreenInfoEvent> screenDebugInfoQueue = new ConcurrentLinkedQueue<ScreenInfoEvent>();
+    private ConcurrentLinkedQueue<ScreenChangedEvent> screenNameInfoQueue = new ConcurrentLinkedQueue<ScreenChangedEvent>();
+
+    public DebugInfo() {
+        ApplicationBus.getInstance().subscribe(this);
+
+        applicationDebugInfo = new DebugInfoComponent();
+        screenNameInfo = new DebugInfoComponent();
+        screenDebugInfo = new DebugInfoComponent();
+
+        Table topTable = new Table();
+        topTable.add(screenNameInfo).expandX();
+        topTable.add(screenDebugInfo).pad(0, INFO_PADDING, 0, 0).expandX();
+        add(topTable);
+        row();
+        add(new Container<Actor>()).expand();
+        row();
+        add(applicationDebugInfo).expandX();
+    }
+
+    public void update() {
         applicationDebugInfo.setInfoValue(FPS, "" + Gdx.graphics.getFramesPerSecond());
         applicationDebugInfo.setInfoValue(JAVA_HEAP, ("" + Gdx.app.getJavaHeap() / MB_SIZE) + UNIT_MB);
         applicationDebugInfo.setInfoValue(NATIVE_HEAP, ("" + Gdx.app.getNativeHeap() / MB_SIZE) + UNIT_MB);
         applicationDebugInfo.setInfoValue(LOCALE, "" + TablexiaSettings.getInstance().getLocale());
         applicationDebugInfo.setInfoValue(VERSION, "" + TablexiaSettings.getInstance().getVersionName());
 
-		while (!screenDebugInfoQueue.isEmpty()) {
-			ScreenInfoEvent screenInfoEvent = screenDebugInfoQueue.poll();
-			screenDebugInfo.setInfoValue(screenInfoEvent.getInfoKey(), screenInfoEvent.getInfoValue());
-		}
-		
-		while (!screenNameInfoQueue.isEmpty()) {
-			screenNameInfo.setInfoValue(SCREEN_NAME, "" + screenNameInfoQueue.poll().getScreenClass().getSimpleName());
-		}
-	}
-	
-	@Handler
-	public void handleScreenChangedEvent(ScreenChangedEvent screenChangedEvent) {
-		screenDebugInfo.clean();
-		screenNameInfoQueue.add(screenChangedEvent);
-	}
-	
-	@Handler
-	public void handleScreenInfoEvent(ScreenInfoEvent screenInfoEvent) {
-		screenDebugInfoQueue.add(screenInfoEvent);
-	}
-
-	@Override
-	public void dispose() {
-		ApplicationBus.getInstance().unsubscribe(this);
-	}
+        while (!screenDebugInfoQueue.isEmpty()) {
+            ScreenInfoEvent screenInfoEvent = screenDebugInfoQueue.poll();
+            screenDebugInfo.setInfoValue(screenInfoEvent.getInfoKey(), screenInfoEvent.getInfoValue());
+        }
+
+        while (!screenNameInfoQueue.isEmpty()) {
+            screenNameInfo.setInfoValue(SCREEN_NAME, "" + screenNameInfoQueue.poll().getScreenClass().getSimpleName());
+        }
+    }
+
+    public void onResize() {
+        setBounds(0,getStage().getCamera().position.y - getStage().getHeight() / 2,getStage().getWidth(), getStage().getHeight());
+    }
+
+    @Handler
+    public void handleScreenChangedEvent(ScreenChangedEvent screenChangedEvent) {
+        screenDebugInfo.clean();
+        screenNameInfoQueue.add(screenChangedEvent);
+    }
+
+    @Handler
+    public void handleScreenInfoEvent(ScreenInfoEvent screenInfoEvent) {
+        screenDebugInfoQueue.add(screenInfoEvent);
+    }
+
+    @Override
+    public void dispose() {
+        ApplicationBus.getInstance().unsubscribe(this);
+    }
 }
diff --git a/core/src/cz/nic/tablexia/menu/MainMenu.java b/core/src/cz/nic/tablexia/menu/MainMenu.java
index 9f5b5234bd1221a7cdb414d9a08777a50b7e8e18..9bd2e24a680129d42d525feaa03763ec7536f9d9 100644
--- a/core/src/cz/nic/tablexia/menu/MainMenu.java
+++ b/core/src/cz/nic/tablexia/menu/MainMenu.java
@@ -102,7 +102,7 @@ public class MainMenu extends Stack {
         menuTableLayout.reset();
         menuTableLayout.setDebug(TablexiaSettings.getInstance().isShowBoundingBoxes());
 
-        for (final MainMenuDefinition menuItem : MainMenuDefinition.values()) {
+        for (final MainMenuDefinition menuItem : MainMenuDefinition.getItemsForMenu()) {
             addMenuItem(menuItem);
             IMenuItem[] subMenu = menuItem.getSubmenu();
             if (subMenu != null) {
diff --git a/core/src/cz/nic/tablexia/menu/MainMenuDefinition.java b/core/src/cz/nic/tablexia/menu/MainMenuDefinition.java
index 39eece81d741773b1c416ef0c1eac9d95f8b3291..c5dc2cd762935e724295b96b9590ced8dcfe65d4 100644
--- a/core/src/cz/nic/tablexia/menu/MainMenuDefinition.java
+++ b/core/src/cz/nic/tablexia/menu/MainMenuDefinition.java
@@ -1,7 +1,11 @@
 package cz.nic.tablexia.menu;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import cz.nic.tablexia.Tablexia;
 import cz.nic.tablexia.TablexiaApplication;
+import cz.nic.tablexia.TablexiaSettings;
 import cz.nic.tablexia.bus.ApplicationBus;
 import cz.nic.tablexia.bus.ApplicationBus.ApplicationEvent;
 import cz.nic.tablexia.game.GameDefinition;
@@ -11,31 +15,35 @@ import cz.nic.tablexia.screen.encyclopedia.EncyclopediaScreen;
 import cz.nic.tablexia.screen.halloffame.HallOfFameScreen;
 import cz.nic.tablexia.screen.preferences.PreferencesScreen;
 import cz.nic.tablexia.screen.statistics.StatisticsScreen;
+import cz.nic.tablexia.screen.viewport.ViewportDebugScreen;
 
 
 public enum MainMenuDefinition implements IMenuItem {
 
-	GAMES				("mainmenu_games", 			GameDefinition.values(), false, null), // TODO open menu event
-	HALL_OF_FAME		("mainmenu_halloffame", 	null, true, new Tablexia.ChangeScreenEvent(HallOfFameScreen.class, TablexiaApplication.ScreenTransaction.FADE)),
-	STATISTICS			("mainmenu_statistics", 	null, true,  new Tablexia.ChangeScreenEvent(StatisticsScreen.class, TablexiaApplication.ScreenTransaction.FADE)),
-	ENCYCLOPEDIA		("mainmenu_encyclopedia", 	null, true,  new Tablexia.ChangeScreenEvent(EncyclopediaScreen.class, TablexiaApplication.ScreenTransaction.FADE)),
-    PREFERENCES	        ("mainmenu_preferences",	null, true,  new Tablexia.ChangeScreenEvent(PreferencesScreen.class, TablexiaApplication.ScreenTransaction.FADE)),
-	ABOUT_APPLICATION	("mainmenu_about", 			null, true,  new Tablexia.ChangeScreenEvent(AboutScreen.class, TablexiaApplication.ScreenTransaction.FADE)),
-	LOGOUT				("mainmenu_logout", 		null, true, null); // TODO specify event
+	GAMES				(false, "mainmenu_games", 			GameDefinition.values(), false, null), // TODO open menu event
+	HALL_OF_FAME		(false, "mainmenu_halloffame", 	    null, true, new Tablexia.ChangeScreenEvent(HallOfFameScreen.class, TablexiaApplication.ScreenTransaction.FADE)),
+	STATISTICS			(false, "mainmenu_statistics", 	    null, true, new Tablexia.ChangeScreenEvent(StatisticsScreen.class, TablexiaApplication.ScreenTransaction.FADE)),
+	ENCYCLOPEDIA		(false, "mainmenu_encyclopedia", 	null, true, new Tablexia.ChangeScreenEvent(EncyclopediaScreen.class, TablexiaApplication.ScreenTransaction.FADE)),
+    PREFERENCES	        (false, "mainmenu_preferences",	    null, true, new Tablexia.ChangeScreenEvent(PreferencesScreen.class, TablexiaApplication.ScreenTransaction.FADE)),
+	ABOUT_APPLICATION	(false, "mainmenu_about", 			null, true, new Tablexia.ChangeScreenEvent(AboutScreen.class, TablexiaApplication.ScreenTransaction.FADE)),
+	LOGOUT				(false, "mainmenu_logout", 		    null, true, null), // TODO specify event
+    SCREEN_DEBUG    	(true,  "mainmenu_screendebug",     null, true, new Tablexia.ChangeScreenEvent(ViewportDebugScreen.class, TablexiaApplication.ScreenTransaction.FADE));
 
-	private String menuTextKey;
+    private boolean debug;
+    private String menuTextKey;
 	private IMenuItem[] submenu;
 	private boolean isCloseMenu;
 	private ApplicationEvent action;
 
-	private MainMenuDefinition(String nameResource, IMenuItem[] submenu, boolean isCloseMenu, ApplicationEvent action) {
-		this.menuTextKey = nameResource;
+	private MainMenuDefinition(boolean debug, String nameResource, IMenuItem[] submenu, boolean isCloseMenu, ApplicationEvent action) {
+        this.debug = debug;
+        this.menuTextKey = nameResource;
 		this.submenu = submenu;
 		this.isCloseMenu = isCloseMenu;
 		this.action = action;
 	}
 
-	public ApplicationEvent getAction() {
+    public ApplicationEvent getAction() {
 		return action;
 	}
 
@@ -57,4 +65,14 @@ public enum MainMenuDefinition implements IMenuItem {
 	public boolean isCloseMenu() {
 		return isCloseMenu;
 	}
+
+    public static List<MainMenuDefinition> getItemsForMenu() {
+        List<MainMenuDefinition> mainMenu = new ArrayList<MainMenuDefinition>();
+        for (MainMenuDefinition mainMenuDefinition : MainMenuDefinition.values()) {
+            if (TablexiaSettings.getInstance().isDebug() || !mainMenuDefinition.debug) {
+                mainMenu.add(mainMenuDefinition);
+            }
+        }
+        return mainMenu;
+    }
 }
diff --git a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
index 9970ef10468877e99387d9b2d02b540482b33bdc..66131df18860ff40f227dd7ffceec1249a6d5168 100644
--- a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
+++ b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
@@ -158,7 +158,7 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter {
 //////////////////////////// STAGE
 
     private Stage prepareStage() {
-        return new Stage(new XFillViewport());
+		return new Stage(new XFillViewport());
     }
 
     public Stage getStage() {
diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java
index b86aed5b550d6f2d11691d0e92fecf2919608033..724ad0a8489dc7f1c80136e927eb04537932c8af 100644
--- a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java
+++ b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java
@@ -18,7 +18,7 @@ public final class GameMenuAssets {
         FORE, MID, BACK, TITLE, STARTBUTTON, STARTBUTTON_PRESSED;
     }
 
-    private static final String GAMEMENU_PATH = "screen/gamemenu/";
+    private static final String GAMEMENU_PATH = "screen/gamemenu/gfx/";
 
     public static final String OFFICE               = GAMEMENU_PATH + "office.jpg";
     public static final String OFFICE_CLICKMAP      = GAMEMENU_PATH + "clickablemap.png";
diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
index 9fc0efbecdf452775909c568aac8124bc80b94d1..6edb7edaea7d2567b3d391e182b7728291c929ae 100644
--- a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
+++ b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
@@ -8,6 +8,7 @@ import net.engio.mbassy.listener.Handler;
 
 import java.util.List;
 
+import cz.nic.tablexia.TablexiaSettings;
 import cz.nic.tablexia.bus.ApplicationBus;
 import cz.nic.tablexia.game.GameDefinition;
 import cz.nic.tablexia.screen.AbstractTablexiaScreen;
@@ -27,6 +28,7 @@ public class GameMenuScreen extends AbstractTablexiaScreen<Void> {
 
     @Override
     protected void screenLoaded() {
+        getStage().setDebugAll(TablexiaSettings.getInstance().isShowBoundingBoxes());
         vp = new ViewPager();
         vp.addPage(new OfficeMenuPage(this));
 
diff --git a/core/src/cz/nic/tablexia/screen/loader/LoaderScreen.java b/core/src/cz/nic/tablexia/screen/loader/LoaderScreen.java
index 8bc3b3a995ccd53c3d5bcc4a603eec4cb68fa43d..ab4540de92b5599693c68da84ce0edc1ee5a8680 100644
--- a/core/src/cz/nic/tablexia/screen/loader/LoaderScreen.java
+++ b/core/src/cz/nic/tablexia/screen/loader/LoaderScreen.java
@@ -1,5 +1,6 @@
 package cz.nic.tablexia.screen.loader;
 
+import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.scenes.scene2d.actions.Actions;
 import com.badlogic.gdx.scenes.scene2d.ui.Image;
 
@@ -12,7 +13,7 @@ public class LoaderScreen extends AbstractTablexiaScreen<Void> {
 
     private static final String LOADER_BACKGROUND = "gfx/screen_loader_background.jpg";
     private static final String LOADER_SMALL_HAND = "gfx/screen_loader_smallhand.png";
-    private static final String LOADER_BIG_HAND   = "gfx/screen_loader_bighand.png";
+    private static final String LOADER_BIG_HAND = "gfx/screen_loader_bighand.png";
 
     public LoaderScreen() {
         super(false, false, TablexiaAssetManager.StorageType.INTERNAL);
@@ -33,17 +34,24 @@ public class LoaderScreen extends AbstractTablexiaScreen<Void> {
         getStage().addActor(background);
 
         Image smallhand = new Image(getTexture(LOADER_SMALL_HAND));
-        smallhand.setPosition(getStage().getWidth()*0.22f, getStage().getHeight() * 0.64f);
-        smallhand.setSize(getStage().getWidth()*0.01f, getStage().getHeight()*0.06f);
+        smallhand.setPosition(getStage().getWidth() * 0.22f, getStage().getHeight() * 0.64f);
+        smallhand.setSize(getStage().getWidth() * 0.01f, getStage().getHeight() * 0.06f);
         getStage().addActor(smallhand);
-        smallhand.setOrigin(smallhand.getWidth()/2,0);
+        smallhand.setOrigin(smallhand.getWidth() / 2, 0);
         smallhand.addAction(Actions.forever(Actions.rotateBy(-360, 6)));
 
         Image bighand = new Image(getTexture(LOADER_BIG_HAND));
-        bighand.setPosition(getStage().getWidth()*0.22f, getStage().getHeight() * 0.64f);
-        bighand.setSize(getStage().getWidth()*0.01f, getStage().getHeight()*0.06f);
+        bighand.setPosition(getStage().getWidth() * 0.22f, getStage().getHeight() * 0.64f);
+        bighand.setSize(getStage().getWidth() * 0.01f, getStage().getHeight() * 0.06f);
         getStage().addActor(bighand);
-        bighand.setOrigin(bighand.getWidth()/2,0);
+        bighand.setOrigin(bighand.getWidth() / 2, 0);
         bighand.addAction(Actions.forever(Actions.rotateBy(-360, 0.5f)));
     }
+
+    @Override
+    public Texture getTexture(String textureName) {
+        Texture t = super.getTexture(textureName);
+        t.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
+        return t;
+    }
 }
diff --git a/core/src/cz/nic/tablexia/screen/viewport/FullscreenImageDebugScreen.java b/core/src/cz/nic/tablexia/screen/viewport/FullscreenImageDebugScreen.java
new file mode 100644
index 0000000000000000000000000000000000000000..62d64ab7a0eeaa9b14075ec63589e971306a25d8
--- /dev/null
+++ b/core/src/cz/nic/tablexia/screen/viewport/FullscreenImageDebugScreen.java
@@ -0,0 +1,57 @@
+package cz.nic.tablexia.screen.viewport;
+
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.scenes.scene2d.actions.Actions;
+import com.badlogic.gdx.scenes.scene2d.ui.Image;
+
+import java.util.List;
+
+import cz.nic.tablexia.loader.TablexiaAssetManager;
+import cz.nic.tablexia.screen.AbstractTablexiaScreen;
+
+public class FullscreenImageDebugScreen extends AbstractTablexiaScreen<Void> {
+
+    private static final String LOADER_BACKGROUND = "gfx/screen_loader_background.jpg";
+    private static final String LOADER_SMALL_HAND = "gfx/screen_loader_smallhand.png";
+    private static final String LOADER_BIG_HAND = "gfx/screen_loader_bighand.png";
+
+    public FullscreenImageDebugScreen() {
+        super(false, false, TablexiaAssetManager.StorageType.INTERNAL);
+    }
+
+    @Override
+    protected void prepareScreenTextureAssetNames(List<String> textureFileNames) {
+        textureFileNames.add(LOADER_BACKGROUND);
+        textureFileNames.add(LOADER_SMALL_HAND);
+        textureFileNames.add(LOADER_BIG_HAND);
+    }
+
+    @Override
+    protected void screenLoaded() {
+        Image background = new Image(getTexture(LOADER_BACKGROUND));
+        background.setPosition(0, 0);
+        background.setSize(getStage().getWidth(), getStage().getHeight());
+        getStage().addActor(background);
+
+        Image smallhand = new Image(getTexture(LOADER_SMALL_HAND));
+        smallhand.setPosition(getStage().getWidth() * 0.22f, getStage().getHeight() * 0.64f);
+        smallhand.setSize(getStage().getWidth() * 0.01f, getStage().getHeight() * 0.06f);
+        getStage().addActor(smallhand);
+        smallhand.setOrigin(smallhand.getWidth() / 2, 0);
+        smallhand.addAction(Actions.forever(Actions.rotateBy(-360, 6)));
+
+        Image bighand = new Image(getTexture(LOADER_BIG_HAND));
+        bighand.setPosition(getStage().getWidth() * 0.22f, getStage().getHeight() * 0.64f);
+        bighand.setSize(getStage().getWidth() * 0.01f, getStage().getHeight() * 0.06f);
+        getStage().addActor(bighand);
+        bighand.setOrigin(bighand.getWidth() / 2, 0);
+        bighand.addAction(Actions.forever(Actions.rotateBy(-360, 0.5f)));
+    }
+
+    @Override
+    public Texture getTexture(String textureName) {
+        Texture t = super.getTexture(textureName);
+        t.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
+        return t;
+    }
+}
diff --git a/core/src/cz/nic/tablexia/screen/viewport/ViewportDebugScreen.java b/core/src/cz/nic/tablexia/screen/viewport/ViewportDebugScreen.java
new file mode 100644
index 0000000000000000000000000000000000000000..ab27da94d0352bebe2fc8f214cd809a7e933b88b
--- /dev/null
+++ b/core/src/cz/nic/tablexia/screen/viewport/ViewportDebugScreen.java
@@ -0,0 +1,91 @@
+package cz.nic.tablexia.screen.viewport;
+
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.scenes.scene2d.InputEvent;
+import com.badlogic.gdx.scenes.scene2d.InputListener;
+import com.badlogic.gdx.scenes.scene2d.ui.Image;
+
+import java.util.List;
+
+import cz.nic.tablexia.TablexiaSettings;
+import cz.nic.tablexia.screen.AbstractTablexiaScreen;
+import cz.nic.tablexia.util.Log;
+
+/**
+ * Created by lhoracek on 4/13/15.
+ */
+public class ViewportDebugScreen extends AbstractTablexiaScreen<Void> {
+
+    private static final String BASE = "screen/debug/";
+
+    @Override
+    protected void prepareScreenTextureAssetNames(List<String> textureFileNames) {
+        textureFileNames.add(BASE + "red.png");
+        textureFileNames.add(BASE + "blue.png");
+        textureFileNames.add(BASE + "yellow.png");
+        textureFileNames.add(BASE + "pink.png");
+        textureFileNames.add(BASE + "black.png");
+        textureFileNames.add(BASE + "checker.png");
+        textureFileNames.add(BASE + "point.png");
+    }
+
+    @Override
+    protected void screenLoaded() {
+        getStage().setDebugAll(true);
+
+        Image large = new Image(getTexture("yellow.png"));
+        large.setSize(TablexiaSettings.getDefaultScreenWidth(), TablexiaSettings.getMinScreenHeight() * 2);
+        large.setPosition(0, TablexiaSettings.getMinScreenHeight() / -2.0f);
+        getStage().addActor(large);
+
+
+        Image widescreen = new Image(getTexture("red.png"));
+        widescreen.setSize(1000, TablexiaSettings.getMinScreenHeight());
+        getStage().addActor(widescreen);
+
+        int size = 10;
+        for (int i = 0; i < size; i++) {
+            for (int j = 0; j < size; j++) {
+                Texture checker = getTexture("checker.png");
+                Image check = new Image(checker);
+                check.setPosition(500 - (check.getWidth() * size / 2) + (i * check.getWidth()), TablexiaSettings.getMinScreenHeight() / 2 - (check.getWidth() * size / 2) + (j * check.getWidth()));
+                getStage().addActor(check);
+            }
+        }
+
+        getStage().addListener(new InputListener() {
+            Image point;
+
+            @Override
+            public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
+                Log.debug(getClass(), "Touchdown");
+                point = new Image(getTexture("point.png"));
+                getStage().addActor(point);
+                point.setPosition(x - point.getWidth() / 2, y - point.getHeight() / 2);
+                return true;
+            }
+
+
+            @Override
+            public void touchDragged(InputEvent event, float x, float y, int pointer) {
+                point.setPosition(x - point.getWidth() / 2, y - point.getHeight() / 2);
+            }
+
+            @Override
+            public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
+                Log.debug(getClass(), "Liftoff");
+                point.remove();
+                point = null;
+            }
+        });
+        // TODO
+    }
+
+    @Override
+    public Texture getTexture(String textureName) {
+        Texture texture = super.getTexture(BASE + textureName);
+        texture.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
+        return texture;
+    }
+
+}
diff --git a/core/src/cz/nic/tablexia/util/ui/ViewPager.java b/core/src/cz/nic/tablexia/util/ui/ViewPager.java
index 63c279437d71f12586b139866d752714ad05d645..4f63c9811ca3868e22ee7be33bb2f69c07617c3c 100644
--- a/core/src/cz/nic/tablexia/util/ui/ViewPager.java
+++ b/core/src/cz/nic/tablexia/util/ui/ViewPager.java
@@ -40,6 +40,7 @@ public class ViewPager extends ScrollPane {
     private void setup() {
         content = new Table();
         super.setWidget(content);
+        content.setSize(100,100);
         content.defaults().space(0);
         //setClamp(false);
         //setScrollingDisabled(false, true);
diff --git a/core/src/cz/nic/tablexia/util/ui/XFillViewport.java b/core/src/cz/nic/tablexia/util/ui/XFillViewport.java
index 6f9a192ae6d2aa2d54538ee7d8112485584eb355..831a9ac5c06b710f0c2051dc35b4e88a2812a4db 100644
--- a/core/src/cz/nic/tablexia/util/ui/XFillViewport.java
+++ b/core/src/cz/nic/tablexia/util/ui/XFillViewport.java
@@ -1,5 +1,6 @@
 package cz.nic.tablexia.util.ui;
 
+import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.Camera;
 import com.badlogic.gdx.graphics.OrthographicCamera;
 import com.badlogic.gdx.utils.viewport.Viewport;
@@ -12,9 +13,6 @@ import cz.nic.tablexia.util.Log;
  */
 public class XFillViewport extends Viewport {
 
-
-    private float worldWidth, worldHeight;
-
     /**
      * Creates a new viewport using a new {@link com.badlogic.gdx.graphics.OrthographicCamera} with no maximum world size.
      */
@@ -31,10 +29,36 @@ public class XFillViewport extends Viewport {
         setCamera(camera);
     }
 
+    private int screenX, screenY, screenWidth, screenHeight;
+    private float cameraYOffset;
+
+
     @Override
     public void update(int screenWidth, int screenHeight, boolean centerCamera) {
-        int height = (int) Math.min(screenHeight, screenWidth * TablexiaSettings.getMaximumRatio());
-        setScreenBounds(0, Math.max(0, (screenHeight - height) / 2), screenWidth, height);
+        float newWorldHeight = getWorldWidth() / ((float) screenWidth / (float) screenHeight);
+
+        // FIT into screen keeping at least minimum ration
+        this.screenX = (newWorldHeight < TablexiaSettings.getMinScreenHeight()) ? ((int) ((screenWidth - (screenHeight / TablexiaSettings.getMaximumRatio())) / 2)) : 0;
+        this.screenY = 0;
+        this.screenWidth = (newWorldHeight < TablexiaSettings.getMinScreenHeight()) ? ((int) (screenHeight / TablexiaSettings.getMaximumRatio())) : screenWidth;
+        this.screenHeight = screenHeight;
+        setScreenBounds(screenX,screenY,this.screenWidth,this.screenHeight);
+        // SET NEW WORLD HEIGHT
+        this.setWorldHeight(newWorldHeight < TablexiaSettings.getMinScreenHeight() ? TablexiaSettings.getMinScreenHeight() : newWorldHeight); // World width dooes not change
+        cameraYOffset = (getWorldHeight() - TablexiaSettings.getMinScreenHeight()) / 2;
+
+        Log.info(getClass().getName(), "New viewport size (min: " + TablexiaSettings.getMinScreenHeight() + ") update: " + screenWidth + "x" + screenHeight + " - position: " + screenX + "x" + screenY + " - bounds: " + this.screenWidth + "x" + this.screenHeight + " - world: " + getWorldWidth() + "x" + getWorldHeight() + " - y offset: " + cameraYOffset);
         apply(centerCamera);
     }
+
+    @Override
+    public void apply(boolean centerCamera) {
+        Gdx.gl.glViewport(screenX, screenY, screenWidth, screenHeight);
+        getCamera().viewportWidth = getWorldWidth();
+        getCamera().viewportHeight = getWorldHeight();
+        if (centerCamera) getCamera().position.set(getWorldWidth() / 2, getWorldHeight() / 2, 0);
+        getCamera().position.y -= cameraYOffset;
+        getCamera().update();
+    }
+
 }
\ No newline at end of file
diff --git a/desktop/src/cz/nic/tablexia/desktop/DesktopLauncher.java b/desktop/src/cz/nic/tablexia/desktop/DesktopLauncher.java
index 2b8c7bf1a4785907312bfa5822ea82880cead70d..e9bbd105644580e38b9e1667aa2a04d63f006544 100644
--- a/desktop/src/cz/nic/tablexia/desktop/DesktopLauncher.java
+++ b/desktop/src/cz/nic/tablexia/desktop/DesktopLauncher.java
@@ -32,7 +32,7 @@ public class DesktopLauncher {
         String versionName = loadAttributeFromManifest(VERSION_NAME_MANIFEST_ATTRIBUTE);
 
 	    LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
-	    config.resizable = false;
+	    config.resizable = buildType == null || buildType.equals(TablexiaSettings.BuildType.DEVEL.getKey());
 	    config.width = 1280;
 	    config.height = 800;