diff --git a/bin/de/deadlocker8/roadgame/ui/Controller$1.class b/bin/de/deadlocker8/roadgame/ui/Controller$1.class
index 6f25679d13703a2bd3e5d1e2f2263eca6fb93cae..4e053851e8c3cbe0d8718bff2acf9e8545bf0414 100644
Binary files a/bin/de/deadlocker8/roadgame/ui/Controller$1.class and b/bin/de/deadlocker8/roadgame/ui/Controller$1.class differ
diff --git a/bin/de/deadlocker8/roadgame/ui/Controller$2.class b/bin/de/deadlocker8/roadgame/ui/Controller$2.class
index fbe577013de6ba25a8f7dccf22368c68e3f615ae..96d6c60f6b62215bc8af9008d96194a98f7dc941 100644
Binary files a/bin/de/deadlocker8/roadgame/ui/Controller$2.class and b/bin/de/deadlocker8/roadgame/ui/Controller$2.class differ
diff --git a/bin/de/deadlocker8/roadgame/ui/Controller.class b/bin/de/deadlocker8/roadgame/ui/Controller.class
index 5cfb47e5e37c56fb953c13b3aa1a0facd10988d5..125ef454b418ee3c37fa4114307dd6a209ce8bb8 100644
Binary files a/bin/de/deadlocker8/roadgame/ui/Controller.class and b/bin/de/deadlocker8/roadgame/ui/Controller.class differ
diff --git a/bin/de/deadlocker8/roadgame/ui/GUI.fxml b/bin/de/deadlocker8/roadgame/ui/GUI.fxml
index 22974c03f72d05a5a28feb2fef89b5059e581973..83ae0d5f1eee3b63d1f64a00dc8c85d792d8b8b9 100644
--- a/bin/de/deadlocker8/roadgame/ui/GUI.fxml
+++ b/bin/de/deadlocker8/roadgame/ui/GUI.fxml
@@ -5,7 +5,6 @@
 <?import javafx.scene.control.Menu?>
 <?import javafx.scene.control.MenuBar?>
 <?import javafx.scene.control.MenuItem?>
-<?import javafx.scene.control.ScrollPane?>
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.layout.HBox?>
 <?import javafx.scene.layout.StackPane?>
@@ -15,10 +14,7 @@
    <children>
       <HBox layoutX="14.0" layoutY="40.0" prefHeight="546.0" prefWidth="772.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="40.0">
          <children>
-            <AnchorPane fx:id="anchorPaneGame" prefHeight="572.0" prefWidth="599.0" HBox.hgrow="ALWAYS">
-               <children>
-                  <ScrollPane fx:id="scrollPane" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
-               </children></AnchorPane>
+            <AnchorPane fx:id="anchorPaneGame" prefHeight="572.0" prefWidth="599.0" HBox.hgrow="ALWAYS" />
             <VBox alignment="TOP_CENTER" prefHeight="572.0" prefWidth="124.0">
                <HBox.margin>
                   <Insets left="20.0" />
diff --git a/bin/de/deadlocker8/roadgame/ui/ZoomableScrollPane$ZoomHandler.class b/bin/de/deadlocker8/roadgame/ui/ZoomableScrollPane$ZoomHandler.class
new file mode 100644
index 0000000000000000000000000000000000000000..6ebaee931c211e1dc65fbb96c1c0d00a4e3f5e27
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/ui/ZoomableScrollPane$ZoomHandler.class differ
diff --git a/bin/de/deadlocker8/roadgame/ui/ZoomableScrollPane.class b/bin/de/deadlocker8/roadgame/ui/ZoomableScrollPane.class
new file mode 100644
index 0000000000000000000000000000000000000000..6bc0c53ad5bcb6fa305c70236010b97c4e463dc3
Binary files /dev/null and b/bin/de/deadlocker8/roadgame/ui/ZoomableScrollPane.class differ
diff --git a/src/de/deadlocker8/roadgame/ui/Controller.java b/src/de/deadlocker8/roadgame/ui/Controller.java
index 698627764e472476a451b68f1d1f0233b18dc38b..5e5df99607f1a892fcd30d609643d7ecda71f01d 100644
--- a/src/de/deadlocker8/roadgame/ui/Controller.java
+++ b/src/de/deadlocker8/roadgame/ui/Controller.java
@@ -21,7 +21,6 @@ import javafx.scene.control.Alert;
 import javafx.scene.control.Alert.AlertType;
 import javafx.scene.control.Button;
 import javafx.scene.control.Label;
-import javafx.scene.control.ScrollPane;
 import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
 import javafx.scene.input.MouseButton;
@@ -39,14 +38,14 @@ public class Controller
 	@FXML private AnchorPane anchorPaneGame;
 	@FXML private StackPane stackPaneCurrentTile;
 	@FXML private Button buttonRotate;
-	@FXML private ScrollPane scrollPane;
-
+	
 	private Stage stage;
 	private Image icon = new Image("de/deadlocker8/roadgame/resources/icon.png");
 	private final ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/roadgame/main/", Locale.GERMANY);
 	private GridPane grid;
 	private Game game;
 	private Textures textures;
+	private ZoomableScrollPane scrollPane;
 	private StackPane stackPanePlaceHolder;
 	
 	public void init(Stage stage)
@@ -56,10 +55,20 @@ public class Controller
 
 		anchorPaneGame.setStyle("-fx-border-color: #333333; -fx-border-width: 2px");
 		stackPaneCurrentTile.setStyle("-fx-border-color: #333333; -fx-border-width: 2px");
-
+	
 		grid = new GridPane();
-		grid.setFocusTraversable(false);		
-		scrollPane.setContent(grid);
+		grid.setFocusTraversable(false);	
+		
+		scrollPane = new ZoomableScrollPane(grid);		
+		scrollPane.setPannable(true);		
+		scrollPane.setFitToHeight(true);
+		scrollPane.setFitToWidth(true);		
+		anchorPaneGame.getChildren().add(scrollPane);
+		AnchorPane.setTopAnchor(scrollPane, 0.0);
+		AnchorPane.setRightAnchor(scrollPane, 0.0);
+		AnchorPane.setBottomAnchor(scrollPane, 0.0);
+		AnchorPane.setLeftAnchor(scrollPane, 0.0);		
+		
 		anchorPaneGame.setOnMouseClicked(new EventHandler<MouseEvent>()
 		{
 			@Override
diff --git a/src/de/deadlocker8/roadgame/ui/GUI.fxml b/src/de/deadlocker8/roadgame/ui/GUI.fxml
index 22974c03f72d05a5a28feb2fef89b5059e581973..83ae0d5f1eee3b63d1f64a00dc8c85d792d8b8b9 100644
--- a/src/de/deadlocker8/roadgame/ui/GUI.fxml
+++ b/src/de/deadlocker8/roadgame/ui/GUI.fxml
@@ -5,7 +5,6 @@
 <?import javafx.scene.control.Menu?>
 <?import javafx.scene.control.MenuBar?>
 <?import javafx.scene.control.MenuItem?>
-<?import javafx.scene.control.ScrollPane?>
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.layout.HBox?>
 <?import javafx.scene.layout.StackPane?>
@@ -15,10 +14,7 @@
    <children>
       <HBox layoutX="14.0" layoutY="40.0" prefHeight="546.0" prefWidth="772.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="40.0">
          <children>
-            <AnchorPane fx:id="anchorPaneGame" prefHeight="572.0" prefWidth="599.0" HBox.hgrow="ALWAYS">
-               <children>
-                  <ScrollPane fx:id="scrollPane" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
-               </children></AnchorPane>
+            <AnchorPane fx:id="anchorPaneGame" prefHeight="572.0" prefWidth="599.0" HBox.hgrow="ALWAYS" />
             <VBox alignment="TOP_CENTER" prefHeight="572.0" prefWidth="124.0">
                <HBox.margin>
                   <Insets left="20.0" />
diff --git a/src/de/deadlocker8/roadgame/ui/ZoomableScrollPane.java b/src/de/deadlocker8/roadgame/ui/ZoomableScrollPane.java
new file mode 100644
index 0000000000000000000000000000000000000000..8e648f0a1901a989476eb10f56052acc7e3d45b6
--- /dev/null
+++ b/src/de/deadlocker8/roadgame/ui/ZoomableScrollPane.java
@@ -0,0 +1,136 @@
+package de.deadlocker8.roadgame.ui;
+
+import javafx.event.EventHandler;
+import javafx.scene.Group;
+import javafx.scene.Node;
+import javafx.scene.control.ScrollPane;
+import javafx.scene.input.ScrollEvent;
+import javafx.scene.transform.Scale;
+
+public class ZoomableScrollPane extends ScrollPane
+{
+	Group zoomGroup;
+	Scale scaleTransform;
+	Node content;
+	double scaleValue = 1.0;
+	double delta = 0.1;
+
+	public ZoomableScrollPane(Node content)
+	{
+		this.content = content;
+		Group contentGroup = new Group();
+		zoomGroup = new Group();
+		contentGroup.getChildren().add(zoomGroup);
+		zoomGroup.getChildren().add(content);
+		setContent(contentGroup);
+		scaleTransform = new Scale(scaleValue, scaleValue, 0, 0);
+		zoomGroup.getTransforms().add(scaleTransform);
+
+		zoomGroup.setOnScroll(new ZoomHandler());
+	}
+
+	public double getScaleValue()
+	{
+		return scaleValue;
+	}
+
+	public void zoomToActual()
+	{
+		zoomTo(1.0);
+	}
+
+	public void zoomTo(double scaleValue)
+	{
+		this.scaleValue = scaleValue;
+
+		scaleTransform.setX(scaleValue);
+		scaleTransform.setY(scaleValue);
+	}
+
+	public void zoomActual()
+	{
+		scaleValue = 1;
+		zoomTo(scaleValue);
+	}
+
+	public void zoomOut()
+	{
+		scaleValue -= delta;
+
+		if(Double.compare(scaleValue, 0.2) < 0)
+		{
+			scaleValue = 0.2;
+		}
+
+		zoomTo(scaleValue);
+	}
+
+	public void zoomIn()
+	{
+		scaleValue += delta;
+
+		if(Double.compare(scaleValue, 2) > 0)
+		{
+			scaleValue = 2;
+		}
+
+		zoomTo(scaleValue);
+	}
+
+	/**
+	 * 
+	 * @param minimizeOnly
+	 *            If the content fits already into the viewport, then we don't
+	 *            zoom if this parameter is true.
+	 */
+	public void zoomToFit(boolean minimizeOnly)
+	{
+
+		double scaleX = getViewportBounds().getWidth() / getContent().getBoundsInLocal().getWidth();
+		double scaleY = getViewportBounds().getHeight() / getContent().getBoundsInLocal().getHeight();
+
+		// consider current scale (in content calculation)
+		scaleX *= scaleValue;
+		scaleY *= scaleValue;
+
+		// distorted zoom: we don't want it => we search the minimum scale
+		// factor and apply it
+		double scale = Math.min(scaleX, scaleY);
+
+		// check precondition
+		if(minimizeOnly)
+		{
+
+			// check if zoom factor would be an enlargement and if so, just set
+			// it to 1
+			if(Double.compare(scale, 1) > 0)
+			{
+				scale = 1;
+			}
+		}
+
+		// apply zoom
+		zoomTo(scale);
+	}
+
+	private class ZoomHandler implements EventHandler<ScrollEvent>
+	{
+		@Override
+		public void handle(ScrollEvent scrollEvent)
+		{
+			// if (scrollEvent.isControlDown())
+			{
+				if(scrollEvent.getDeltaY() < 0)
+				{
+					zoomOut();
+				}
+				else
+				{
+					zoomIn();
+				}			
+
+				scrollEvent.consume();
+			}
+		}
+	}
+}
\ No newline at end of file