diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/controllers/GameController.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/controllers/GameController.java
index 7e0ff749349593285f409bf9fd85a890d73454b6..87cf63d93ff943125a32cf5666bb53bbff5fd017 100644
--- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/controllers/GameController.java
+++ b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/controllers/GameController.java
@@ -7,12 +7,24 @@ import edu.ntnu.idatt2003.mappevurderingprog2.models.Transform2D;
 import edu.ntnu.idatt2003.mappevurderingprog2.models.Vector2D;
 import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGame;
 import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGameDescription;
+import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGameDescriptionFactory;
 import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGameFileHandler;
 import java.util.ArrayList;
 import java.util.List;
 
 public class GameController {
 
+  public void createSierpinskiTriangle() {
+    ChaosGame.getInstance().setDescription(ChaosGameDescriptionFactory.createSierpinskiTriangle());
+  }
+
+  public void createBarnsleyFern() {
+    ChaosGame.getInstance().setDescription(ChaosGameDescriptionFactory.createBarnsleyFern());
+  }
+
+  public void createJuliaTransformation() {
+    ChaosGame.getInstance().setDescription(ChaosGameDescriptionFactory.createStandardJuliaTransformation());
+  }
   public void updateCanvasCoordinates(Vector2D minCoords, Vector2D maxCoords) {
     ChaosGameDescription description = ChaosGame.getInstance().getDescription();
     description.setMaxCoords(maxCoords);
@@ -50,14 +62,6 @@ public class GameController {
     ChaosGame.getInstance().setCanvas(width, height);
   }
 
-  public int getHeight() {
-    return ChaosGame.getInstance().getCanvas().getHeight();
-  }
-
-  public int getWidth() {
-    return ChaosGame.getInstance().getCanvas().getWidth();
-  }
-
   public void setChaosGameSteps(int steps) {
     ChaosGame.getInstance().setSteps(steps);
   }
diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/chaos/ChaosGame.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/chaos/ChaosGame.java
index bcbeb9a1ca4b41d6add3012d17adb4497d9d3919..3d2341fc13b9f48446cfc6b5d0479660e5362d45 100644
--- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/chaos/ChaosGame.java
+++ b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/models/chaos/ChaosGame.java
@@ -7,7 +7,6 @@ import edu.ntnu.idatt2003.mappevurderingprog2.models.Matrix2x2;
 import edu.ntnu.idatt2003.mappevurderingprog2.models.Transform2D;
 import edu.ntnu.idatt2003.mappevurderingprog2.models.UserInterface;
 import edu.ntnu.idatt2003.mappevurderingprog2.models.Vector2D;
-import edu.ntnu.idatt2003.mappevurderingprog2.views.Components.JuliaTransformationButton;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/BarnsleyFernButton.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/BarnsleyFernButton.java
deleted file mode 100644
index 96824414f08a14d009c1d7e157334bab3c40f07a..0000000000000000000000000000000000000000
--- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/BarnsleyFernButton.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package edu.ntnu.idatt2003.mappevurderingprog2.views.Components;
-
-import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController;
-import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGame;
-import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGameDescriptionFactory;
-import edu.ntnu.idatt2003.mappevurderingprog2.views.View;
-import javafx.scene.canvas.Canvas;
-
-public class BarnsleyFernButton extends TransformationButton {
-  public BarnsleyFernButton(View view, Canvas mainCanvas, GameController gameController) {
-    super("Barnsley Fern", gameController, view, mainCanvas, ChaosGameDescriptionFactory.createBarnsleyFern(), 200, 200);
-  }
-}
\ No newline at end of file
diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/ExistingFractalsMenu.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/ExistingFractalsMenu.java
index 9f5b74c2311d8d6a361eee54bcdddf6046def6b1..5694d5d48b08896889b328fd1a8fac00eed13686 100644
--- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/ExistingFractalsMenu.java
+++ b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/ExistingFractalsMenu.java
@@ -17,14 +17,32 @@ public class ExistingFractalsMenu extends VBox {
   public ExistingFractalsMenu(View view, GameController gameController) {
     Label headline = new Label("Choose existing fractal");
     headline.setStyle("-fx-font-size: 16px; -fx-font-weight: bold;");
-    SierpinskiTriangleButton sierpinskiButton = new SierpinskiTriangleButton(view, view.getMainCanvas(), gameController);
-    BarnsleyFernButton barnsleyButton = new BarnsleyFernButton(view, view.getMainCanvas(), gameController);
-    JuliaTransformationButton juliaButton = new JuliaTransformationButton(view, view.getMainCanvas(), gameController);
+    Button sierpinskiTriangleButton = new Button("Sierpinski Triangle");
+    sierpinskiTriangleButton.setOnAction(event -> {
+      gameController.createSierpinskiTriangle();
+      gameController.setChaosGameSteps(1000000);
+      gameController.setChaosCanvasSize(200, 200);
+      gameController.runTransformation();
+    });
+    Button barnsleyFernButton = new Button("Barnsley Fern");
+    barnsleyFernButton.setOnAction(event -> {
+      gameController.createBarnsleyFern();
+      gameController.setChaosGameSteps(1000000);
+      gameController.setChaosCanvasSize(200, 200);
+      gameController.runTransformation();
+    });
+    Button juliaButton = new Button("Julia Transformation");
+    juliaButton.setOnAction(event -> {
+      gameController.createJuliaTransformation();
+      gameController.setChaosGameSteps(1000000);
+      gameController.setChaosCanvasSize(200, 200);
+      gameController.runTransformation();
+    });
 
     Button savedFractalsButton = new Button("Saved Fractals");
     savedFractalsButton.setOnAction(event -> showSavedFractalsDialog(gameController));
 
-    getChildren().addAll(headline, sierpinskiButton, barnsleyButton, juliaButton, savedFractalsButton);
+    getChildren().addAll(headline, sierpinskiTriangleButton, barnsleyFernButton, juliaButton, savedFractalsButton);
     setAlignment(Pos.TOP_CENTER);
     setSpacing(10);
   }
diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/ExtraUserOptions.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/ExtraUserOptions.java
index e7cc801ee539b62965703a31437d43fecba5f168..5866e59ebde9a5171b0160682ca6108ad050173b 100644
--- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/ExtraUserOptions.java
+++ b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/ExtraUserOptions.java
@@ -19,11 +19,17 @@ public class ExtraUserOptions extends VBox {
 
   private final Button resetViewButton;
   private final Button clearCanvasButton;
-  private final Slider zoomSlider;
   private final Node node;
   private final RotationButton rotationButton;
   private final InformationButton informationButton;
   private GameController gameController;
+  private Zoom zoom;
+  private Button zoomInButton;
+  private Button zoomOutButton;
+  private Button upButton;
+  private Button downButton;
+  private Button leftButton;
+  private Button rightButton;
 
   public ExtraUserOptions(Node node, GameController gameController) {
     this.node = node;
@@ -32,7 +38,14 @@ public class ExtraUserOptions extends VBox {
     clearCanvasButton = new Button("Clear Canvas");
     rotationButton = new RotationButton(node);
     informationButton = new InformationButton("Additional Information");
-    zoomSlider = new Slider(0.5, 4.0, 1.0);
+    this.zoom = new Zoom(gameController);
+    this.zoomInButton = new Button("+");
+    this.zoomOutButton = new Button("-");
+    this.upButton = new Button("Up");
+    this.downButton = new Button("Down");
+    this.leftButton = new Button("Left");
+    this.rightButton = new Button("Right");
+    setupZoomButtons();
     extraUserOptionsLabel();
 
     Label rotationLabel = new Label("Rotate the view");
@@ -41,9 +54,24 @@ public class ExtraUserOptions extends VBox {
     Label zoomLabel = new Label("Zoom");
     zoomLabel.setStyle("-fx-font-size: 14px; ");
 
+    Label navigateLabel = new Label("Navigate");
+    navigateLabel.setStyle("-fx-font-size: 14px; ");
+
+    HBox zoomControls = new HBox(zoomInButton, zoomOutButton);
+    zoomControls.setAlignment(Pos.CENTER);
+    zoomControls.setSpacing(10);
+
+    HBox leftRightControls = new HBox(leftButton, rightButton);
+    leftRightControls.setAlignment(Pos.CENTER);
+    leftRightControls.setSpacing(10);
+
     this.getChildren().addAll(
         zoomLabel,
-        createZoomSliderWithLabels(),
+        zoomControls,
+        navigateLabel,
+        upButton,
+        leftRightControls,
+        downButton,
         rotationLabel,
         rotationButton,
         createSeparator(),
@@ -54,28 +82,24 @@ public class ExtraUserOptions extends VBox {
     extraUserOptionsInitialize();
   }
 
-
-  private HBox createZoomSliderWithLabels() {
-    Label zoomInLabel = new Label("In");
-    Label zoomOutLabel = new Label("Out");
-    zoomSlider.setPrefWidth(100);
-
-    HBox sliderWithLabels = new HBox(zoomOutLabel, zoomSlider, zoomInLabel);
-    sliderWithLabels.setSpacing(10);
-    return sliderWithLabels;
+  private void setupZoomButtons() {
+    zoomInButton.setOnAction(event -> zoom.zoomIn());
+    zoomOutButton.setOnAction(event -> zoom.zoomOut());
+    upButton.setOnAction(event -> zoom.moveUp(0.03));
+    downButton.setOnAction(event -> zoom.moveDown(0.03));
+    leftButton.setOnAction(event -> zoom.moveLeft(0.03));
+    rightButton.setOnAction(event -> zoom.moveRight(0.03));
   }
 
   private void extraUserOptionsInitialize() {
     extraUserOptionsSizeAndPositioning();
     extraUserOptionsStyling();
-    sliderToZoom();
     resetZoomButton();
     clearCanvasButton();
   }
 
   private void resetZoomButton() {
     resetViewButton.setOnAction(event -> {
-      zoomSlider.setValue(1.0);
       node.getTransforms().clear();
       node.setTranslateX(0);
       node.setTranslateY(0);
@@ -98,15 +122,7 @@ public class ExtraUserOptions extends VBox {
     setStyle("-fx-background-color: #eed9c4;");
   }
 
-  private void sliderToZoom() {
-    zoomSlider.valueProperty().addListener((observable, oldValue, newValue) -> {
-      double zoomFactor = newValue.doubleValue();
-      node.getTransforms().clear();
-      node.getTransforms().add(new javafx.scene.transform.Scale(
-          zoomFactor, zoomFactor, node.getBoundsInParent().getWidth()
-          / 2, node.getBoundsInParent().getHeight() / 2));
-    });
-  }
+
 
   private void clearCanvasButton() {
     clearCanvasButton.setOnAction(event -> {
diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/JuliaTransformationButton.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/JuliaTransformationButton.java
deleted file mode 100644
index 93f5e4d756a07b0560d9a67ef1910a40bcd57a20..0000000000000000000000000000000000000000
--- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/JuliaTransformationButton.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package edu.ntnu.idatt2003.mappevurderingprog2.views.Components;
-
-import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController;
-import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGame;
-import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGameDescriptionFactory;
-import edu.ntnu.idatt2003.mappevurderingprog2.views.View;
-import javafx.scene.canvas.Canvas;
-
-public class JuliaTransformationButton extends TransformationButton {
-  public JuliaTransformationButton(View view, Canvas mainCanvas, GameController gameController) {
-    super("Julia Transformation", gameController, view, mainCanvas, ChaosGameDescriptionFactory.createStandardJuliaTransformation(), 200, 200);
-  }
-}
\ No newline at end of file
diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/Menu.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/Menu.java
index 45b5f6d43914e65df2c8f1d314cbe3246d6b4350..cfea2ccb6c8c32306c554c2b2def81e372d1b405 100644
--- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/Menu.java
+++ b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/Menu.java
@@ -2,7 +2,9 @@ package edu.ntnu.idatt2003.mappevurderingprog2.views.Components;
 
 import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController;
 import edu.ntnu.idatt2003.mappevurderingprog2.views.View;
+import javafx.application.Platform;
 import javafx.geometry.Pos;
+import javafx.scene.control.Button;
 import javafx.scene.control.Label;
 import javafx.scene.control.Separator;
 import javafx.scene.layout.VBox;
@@ -11,27 +13,29 @@ public class Menu extends VBox {
   private ExistingFractalsMenu existingFractalsMenu;
   private CreateFractalMenu createFractalMenu;
   private CurrentFractalMenu editFractalMenu;
-  private ExtraUserOptions extraUserOptions;
+  private Button quitButton;
 
   public Menu(View view, GameController gameController) {
     existingFractalsMenu = new ExistingFractalsMenu(view, gameController);
     createFractalMenu = new CreateFractalMenu(view, gameController);
     editFractalMenu = new CurrentFractalMenu(view, gameController);
-    extraUserOptions = new ExtraUserOptions(view.getMainCanvas(), gameController);
+    quitButton = new Button("Quit application");
     initializeMenu();
   }
 
   private void initializeMenu() {
     Label menuLabel = new Label("Menu");
     menuLabel.setStyle("-fx-font-size: 20px; -fx-font-weight: bold;-fx-font-family: 'Times New Roman'");
-    setPrefWidth(200);
 
-    getChildren().addAll(menuLabel, new Separator(),
+    quitButton.setStyle("-fx-background-color: red; -fx-text-fill: white; -fx-font-weight: bold;");
+    quitButton.setOnAction(e -> Platform.exit());
+    getChildren().addAll(menuLabel,
+        new Separator(),
         existingFractalsMenu,
         createFractalMenu,
         editFractalMenu,
         new Separator(),
-        extraUserOptions);
+        quitButton);
     setAlignment(Pos.TOP_CENTER);
     setSpacing(20);
 
diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/SierpinskiTriangleButton.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/SierpinskiTriangleButton.java
deleted file mode 100644
index 34228cb57ef91bcb71f9af0ae387134ee1e4976f..0000000000000000000000000000000000000000
--- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/SierpinskiTriangleButton.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package edu.ntnu.idatt2003.mappevurderingprog2.views.Components;
-
-import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController;
-import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGameDescriptionFactory;
-import edu.ntnu.idatt2003.mappevurderingprog2.views.View;
-import javafx.scene.canvas.Canvas;
-
-public class SierpinskiTriangleButton extends TransformationButton{
-  public SierpinskiTriangleButton(View view, Canvas mainCanvas, GameController gameController) {
-    super("Sierpinski Triangle", gameController, view, mainCanvas, ChaosGameDescriptionFactory.createSierpinskiTriangle(), 200, 200);
-  }
-}
diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/TransformationButton.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/TransformationButton.java
deleted file mode 100644
index c4320e74fb10d8a3589bc69e799d3b43ea181d38..0000000000000000000000000000000000000000
--- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/TransformationButton.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package edu.ntnu.idatt2003.mappevurderingprog2.views.Components;
-
-import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController;
-import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosCanvas;
-import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGame;
-import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGameDescription;
-import edu.ntnu.idatt2003.mappevurderingprog2.utils.Colorpalette;
-import edu.ntnu.idatt2003.mappevurderingprog2.views.View;
-import javafx.scene.canvas.Canvas;
-import javafx.scene.canvas.GraphicsContext;
-import javafx.scene.control.Button;
-
-public abstract class TransformationButton extends Button {
-  protected GraphicsContext gc;
-  protected Canvas transformationCanvas;
-  protected View view;
-  protected ChaosGameDescription chaosGameDescription;
-  protected int height;
-  protected int width;
-  private GameController gameController;
-
-  public TransformationButton(String label, GameController gameController, View view, Canvas transformationCanvas, ChaosGameDescription chaosGameDescription, int height, int width) {
-    super(label);
-    this.gameController = gameController;
-    this.view = view;
-    this.transformationCanvas = transformationCanvas;
-    this.gc = transformationCanvas.getGraphicsContext2D();
-    this.chaosGameDescription = chaosGameDescription;
-    this.height = height;
-    this.width = width;
-
-    this.setOnAction(event -> {
-      gameController.setChaosGameSteps(1000000);
-      gameController.setChaosGameDescription(chaosGameDescription);
-      gameController.setChaosCanvasSize(width, height);
-      gameController.runTransformation();
-      if (gameController.getOutOfBoundsCount() > 0) {
-        UserFeedback.showErrorPopup("Error", gameController.getOutOfBoundsCount() + " points were out of bounds. Try adjusting the max and min coordinates.");
-      }
-    });
-  }
-}
diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/Zoom.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/Zoom.java
index e16357789b247554c9813467cad0dee53f016c95..620215e606a64499b4414e7fa8c5af68c9924928 100644
--- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/Zoom.java
+++ b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/Components/Zoom.java
@@ -1,69 +1,72 @@
 package edu.ntnu.idatt2003.mappevurderingprog2.views.Components;
 
 import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController;
-import javafx.scene.Node;
-import javafx.scene.control.Slider;
-import javafx.scene.transform.Scale;
+import edu.ntnu.idatt2003.mappevurderingprog2.models.Vector2D;
 
 public class Zoom {
-
-  private double mouseX, mouseY;
   private GameController gameController;
-  private Slider zoomSlider;
 
-  public Zoom(Node node, GameController gameController) {
+  public Zoom(GameController gameController) {
     this.gameController = gameController;
-    zoomSlider = new Slider(0.5, 4.0, 1.0);
-    setUpZoomSlider();
-    setUpZoomAndMovement(node);
   }
 
-  public void setUpZoomAndMovement(Node node) {
-    zoomInAndOut(node);
-    screenMovement(node);
-    bindSliderToZoom(node);
+  public void zoomIn() {
+    adjustZoom(0.9);
+  }
+
+  public void zoomOut() {
+    adjustZoom(1.1);
+  }
+
+  public void moveLeft(double amount) {
+    translateView(-amount, 0);
   }
 
-  private void zoomInAndOut(Node node) {
-    node.setOnScroll(event -> {
-      double zoomFactor = 1.05;
-      double deltaY = event.getDeltaY();
-      if (deltaY < 0) {
-        zoomFactor = 2.0 - zoomFactor;
-      }
-      Scale scale = new Scale(zoomFactor, zoomFactor, event.getX(), event.getY());
-      node.getTransforms().add(scale);
-
-      event.consume();
-    });
+  public void moveRight(double amount) {
+    translateView(amount, 0);
   }
 
-  private void screenMovement(Node node) {
-    node.setOnMousePressed(event -> {
-      mouseX = event.getSceneX();
-      mouseY = event.getSceneY();
-    });
-
-    node.setOnMouseDragged(event -> {
-      double deltaX = event.getSceneX() - mouseX;
-      double deltaY = event.getSceneY() - mouseY;
-      node.setTranslateX(node.getTranslateX() + deltaX);
-      node.setTranslateY(node.getTranslateY() + deltaY);
-      mouseX = event.getSceneX();
-      mouseY = event.getSceneY();
-    });
+  public void moveUp(double amount) {
+    translateView(0, amount);
   }
 
-  private void bindSliderToZoom(Node node) {
-    zoomSlider.valueProperty().addListener((observable, oldValue, newValue) -> {
-      double zoomFactor = newValue.doubleValue();
-      node.getTransforms().clear();
-      node.getTransforms().add(new Scale(zoomFactor, zoomFactor, node.getBoundsInParent().getWidth() / 2, node.getBoundsInParent().getHeight() / 2));
-    });
+  public void moveDown(double amount) {
+    translateView(0, -amount);
   }
 
-  private void setUpZoomSlider() {
-    zoomSlider.valueProperty().addListener((observable, oldValue, newValue) -> {
-    });
+  private void adjustZoom(double adjustFactor) {
+    Vector2D currentMin = gameController.getCurrentMinCoords();
+    Vector2D currentMax = gameController.getCurrentMaxCoords();
+
+    double centerX = (currentMax.getX0() + currentMin.getX0()) / 2;
+    double centerY = (currentMax.getX1() + currentMin.getX1()) / 2;
+
+    double newMinX = centerX + (currentMin.getX0() - centerX) * adjustFactor;
+    double newMaxX = centerX + (currentMax.getX0() - centerX) * adjustFactor;
+    double newMinY = centerY + (currentMin.getX1() - centerY) * adjustFactor;
+    double newMaxY = centerY + (currentMax.getX1() - centerY) * adjustFactor;
+
+    updateCoordinates(newMinX, newMaxX, newMinY, newMaxY);
+  }
+
+  private void translateView(double deltaX, double deltaY) {
+    Vector2D currentMin = gameController.getCurrentMinCoords();
+    Vector2D currentMax = gameController.getCurrentMaxCoords();
+
+    double newMinX = currentMin.getX0() + deltaX;
+    double newMaxX = currentMax.getX0() + deltaX;
+    double newMinY = currentMin.getX1() + deltaY;
+    double newMaxY = currentMax.getX1() + deltaY;
+
+    updateCoordinates(newMinX, newMaxX, newMinY, newMaxY);
+  }
+
+  private void updateCoordinates(double newMinX, double newMaxX, double newMinY, double newMaxY) {
+    Vector2D newMin = new Vector2D(newMinX, newMinY);
+    Vector2D newMax = new Vector2D(newMaxX, newMaxY);
+
+    gameController.updateCanvasCoordinates(newMin, newMax);
+    gameController.setChaosCanvasSize(200, 200);
+    gameController.runTransformation();
   }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/View.java b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/View.java
index 2e434f702480f622c2b93dadee3111d4d7a44701..87da3af5f5f0143611b13aa29f9d9351d1623410 100644
--- a/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/View.java
+++ b/src/main/java/edu/ntnu/idatt2003/mappevurderingprog2/views/View.java
@@ -2,9 +2,7 @@ package edu.ntnu.idatt2003.mappevurderingprog2.views;
 
 import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController;
 import edu.ntnu.idatt2003.mappevurderingprog2.views.Components.ExtraUserOptions;
-import edu.ntnu.idatt2003.mappevurderingprog2.views.Components.JuliaDialog;
 import edu.ntnu.idatt2003.mappevurderingprog2.views.Components.Menu;
-import edu.ntnu.idatt2003.mappevurderingprog2.views.Components.Zoom;
 import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosCanvas;
 import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGame;
 import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGameObserver;
@@ -27,14 +25,12 @@ public class View extends BorderPane implements ChaosGameObserver {
   private Canvas mainCanvas;
   private GameController gameController;
   private Menu menu;
+  private ExtraUserOptions extraUserOptions;
   private int greenThreshold, blueThreshold, redThreshold;
-  private Zoom zoom;
 
   public View(GameController gameController) {
     this.gameController = gameController;
     this.mainCanvas = new Canvas(600, 400);
-    this.zoom = new Zoom(mainCanvas, gameController);
-    zoom.setUpZoomAndMovement(mainCanvas);
   }
 
   public Canvas getMainCanvas() {
@@ -92,7 +88,13 @@ public class View extends BorderPane implements ChaosGameObserver {
     this.setBackground(new Background(new BackgroundFill(Colorpalette.Primary, CornerRadii.EMPTY, Insets.EMPTY)));
     this.setCenter(mainCanvas);
     this.menu = new Menu(this, gameController);
+    menu.setPrefWidth(Size.getScreenWidth() * 0.15);
+    menu.setMaxWidth(Size.getScreenWidth() * 0.15);
+    this.extraUserOptions = new ExtraUserOptions(this.getMainCanvas(), gameController);
+    extraUserOptions.setPrefWidth(Size.getScreenWidth() * 0.15);
+    extraUserOptions.setMaxWidth(Size.getScreenWidth() * 0.15);
     this.setLeft(menu);
+    this.setRight(extraUserOptions);
     return new Scene(this, Size.getScreenWidth(), Size.getScreenHeight());
   }
 
diff --git a/src/main/resources/transformations/ZoomedIn b/src/main/resources/transformations/ZoomedIn
new file mode 100644
index 0000000000000000000000000000000000000000..ba79156e35865d2ebebddd170df290ede570e708
--- /dev/null
+++ b/src/main/resources/transformations/ZoomedIn
@@ -0,0 +1,6 @@
+Affine2D
+0.31734899055740784, 0.43734899055740795
+0.502651009442592, 0.6226510094425921
+0.500000, 0.000000, 0.000000, 0.500000, 0.0, 0.0
+0.500000, 0.000000, 0.000000, 0.500000, 0.5, 0.0
+0.500000, 0.000000, 0.000000, 0.500000, 0.25, 0.5
diff --git a/src/test/java/edu/ntnu/idatt2003/mappevurderingprog2/AffineTransform2DPositiveTest.java b/src/test/java/edu/ntnu/idatt2003/mappevurderingprog2/AffineTransform2DPositiveTest.java
index 4b67c27d1906344770251a905b46ccab51f06469..3e8ae156b87662960990b30d7da33dbd8b08345b 100644
--- a/src/test/java/edu/ntnu/idatt2003/mappevurderingprog2/AffineTransform2DPositiveTest.java
+++ b/src/test/java/edu/ntnu/idatt2003/mappevurderingprog2/AffineTransform2DPositiveTest.java
@@ -39,7 +39,9 @@ public class AffineTransform2DPositiveTest {
         Matrix2x2 matrix = new Matrix2x2(1, 0, 0, 1);
         Vector2D vector = new Vector2D(1, 1);
         AffineTransform2D transform = new AffineTransform2D(matrix, vector);
-        Vector2D result = transform.transform(new Vector2D(1, 1));
-        assertEquals(new Vector2D(2, 2), result);
+        Vector2D point = new Vector2D(1, 1);
+        Vector2D result = transform.transform(point);
+        assertEquals(2, result.getX0());
+        assertEquals(2, result.getX1());
     }
 }
\ No newline at end of file