diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java b/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java
index e8d15a2de7776ae7ab3d3ff34c24705fc9db46a2..ae0fe53297c2cbc93748f66f58612ad1c17f6969 100644
--- a/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java
+++ b/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java
@@ -1,6 +1,5 @@
 package cz.nic.tablexia.screen.gamemenu.pages;
 
-import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.Color;
 import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.graphics.g2d.Batch;
@@ -11,7 +10,7 @@ import com.badlogic.gdx.scenes.scene2d.actions.AlphaAction;
 import com.badlogic.gdx.scenes.scene2d.actions.MoveToAction;
 import com.badlogic.gdx.scenes.scene2d.ui.Image;
 import com.badlogic.gdx.scenes.scene2d.ui.Label;
-import com.badlogic.gdx.scenes.scene2d.ui.Skin;
+import com.badlogic.gdx.scenes.scene2d.ui.Stack;
 import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
 
 import cz.nic.tablexia.TablexiaSettings;
@@ -28,6 +27,7 @@ public class GameMenuPage extends MenuPage implements ViewPager.ScrollListener {
     private GameDefinition game;
 
     private float diffEasyX, diffMediumX, diffHardX;
+    private Image diffEasy, diffMedium, diffHard;
 
     private float scrollOffset = TablexiaSettings.getDefaultScreenWidth(); // hack to keep paralax layers out of picture before scrolled for first time
 
@@ -114,7 +114,7 @@ public class GameMenuPage extends MenuPage implements ViewPager.ScrollListener {
         Texture diffBar = getScreen().getTexture(GameMenuAssets.DIFF_BAR);
         Image diffBarImage = new Image(diffBar);
 
-        int diffBarHeight = (int) (screen.getStage().getHeight() * 0.05);
+        int diffBarHeight = (int) (screen.getStage().getHeight() * 0.04f);
         int diffBarWidth = (int) (diffBarHeight * ((float) diffBar.getWidth() / (float) diffBar.getHeight()));
         int diffBarX = (int) screen.getStage().getWidth() / 2 - diffBarWidth / 2;
         int diffBarY = (int) (screen.getStage().getHeight() * 0.1 - diffBarHeight);
@@ -125,23 +125,29 @@ public class GameMenuPage extends MenuPage implements ViewPager.ScrollListener {
         // Difficulty button
 
 
-        final Texture diff = getScreen().getTexture(GameMenuAssets.DIFF_THUMB_MEDIUM);
-        final Image diffButton = new Image(diff);
-        float diffY = 0;
-        float diffHeight = screen.getStage().getHeight() * 0.15f;
+        final Texture diff = getScreen().getTexture(GameMenuAssets.DIFF_THUMB_EASY);
+
+
+        float diffY = screen.getStage().getHeight() * 0.02f;
+        float diffHeight = screen.getStage().getHeight() * 0.12f;
         float diffWidth = diffHeight * ((float) diff.getWidth() / (float) diff.getHeight());
 
         diffMediumX = (screen.getStage().getWidth() / 2) - (diffWidth / 2) + (int) (diffWidth * 0.1f);
         diffEasyX = diffMediumX - diffBarWidth / 2;
         diffHardX = diffMediumX + diffBarWidth / 2;
 
-        float diffX = diffEasyX;
-        diffButton.setSize(diffWidth, diffHeight);
-        diffButton.setPosition(diffX, diffY);
-        addActor(diffButton);
+        final Stack diffStack = new Stack();
+
+        diffStack.addActor(diffEasy = new Image(diff));
+        diffStack.addActor(diffMedium = new Image(getScreen().getTexture(GameMenuAssets.DIFF_THUMB_MEDIUM)));
+        diffStack.addActor(diffHard = new Image(getScreen().getTexture(GameMenuAssets.DIFF_THUMB_HARD)));
 
+        float diffX = diffEasyX;
+        diffStack.setSize(diffWidth, diffHeight);
+        diffStack.setPosition(diffX, diffY);
+        addActor(diffStack);
 
-        diffButton.addListener(new InputListener() {
+        diffStack.addListener(new InputListener() {
             float lastX;
 
             @Override
@@ -155,9 +161,22 @@ public class GameMenuPage extends MenuPage implements ViewPager.ScrollListener {
             @Override
             public void touchDragged(InputEvent event, float x, float y, int pointer) {
                 super.touchDragged(event, x, y, pointer);
-                float bx = diffButton.getX() + (x - lastX);
+                float bx = diffStack.getX() + (x - lastX);
                 if (bx >= diffEasyX && bx <= diffHardX) {
-                    diffButton.setPosition(bx, diffButton.getY());
+                    diffStack.setPosition(bx, diffStack.getY());
+                }
+                if (bx < diffMediumX) {
+                    if ((diffEasyX + ((diffMediumX - diffEasyX) / 2)) > bx) {
+                        showDifficulty(diffEasy);
+                    } else {
+                        showDifficulty(diffMedium);
+                    }
+                } else {
+                    if ((diffMediumX + ((diffHardX - diffMediumX) / 2)) > bx) {
+                        showDifficulty(diffMedium);
+                    } else {
+                        showDifficulty(diffHard);
+                    }
                 }
                 event.stop();
             }
@@ -165,27 +184,34 @@ public class GameMenuPage extends MenuPage implements ViewPager.ScrollListener {
             @Override
             public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
                 super.touchUp(event, x, y, pointer, button);
-                float bx = diffButton.getX() + (x - lastX);
+                float bx = diffStack.getX() + (x - lastX);
                 MoveToAction ma = new MoveToAction();
                 if (bx < diffMediumX) {
                     if ((diffEasyX + ((diffMediumX - diffEasyX) / 2)) > bx) {
-                        ma.setPosition(diffEasyX, diffButton.getY());
+                        ma.setPosition(diffEasyX, diffStack.getY());
                     } else {
-                        ma.setPosition(diffMediumX, diffButton.getY());
+                        ma.setPosition(diffMediumX, diffStack.getY());
                     }
                 } else {
                     if ((diffMediumX + ((diffHardX - diffMediumX) / 2)) > bx) {
-                        ma.setPosition(diffMediumX, diffButton.getY());
+                        ma.setPosition(diffMediumX, diffStack.getY());
                     } else {
-                        ma.setPosition(diffHardX, diffButton.getY());
+                        ma.setPosition(diffHardX, diffStack.getY());
                     }
                 }
-                diffButton.addAction(ma);
+                diffStack.addAction(ma);
                 event.stop();
             }
         });
     }
 
+    private void showDifficulty(Image diff) {
+        diffEasy.setVisible(false);
+        diffMedium.setVisible(false);
+        diffHard.setVisible(false);
+        diff.setVisible(true);
+    }
+
     @Override
     public void draw(Batch batch, float parentAlpha) {
         // Paralax layers