diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java
index 4f25db765a951d54e157ae96fc934e71bf9920dd..3a523cc9aaf4cc3a1b89e5d3b5e645a1be87d149 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java
@@ -1,6 +1,6 @@
 package de.hdm_stuttgart.battlearena.Controller;
 
-import de.hdm_stuttgart.battlearena.Controller.Utilities.ScreenClasses;
+import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader;
 import de.hdm_stuttgart.battlearena.Controller.Utilities.ScreenDimensionCalculator;
 import de.hdm_stuttgart.battlearena.Controller.Enum.GameMode;
 import de.hdm_stuttgart.battlearena.Controller.Enum.GameState;
@@ -17,35 +17,43 @@ import de.hdm_stuttgart.battlearena.Model.Map.TileManager;
 
 import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffects;
 import javafx.animation.AnimationTimer;
-import javafx.beans.value.ChangeListener;
-import javafx.beans.value.ObservableValue;
 import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
 import javafx.fxml.Initializable;
-import javafx.geometry.Insets;
 import javafx.geometry.Rectangle2D;
+import javafx.scene.Group;
+import javafx.scene.Node;
+import javafx.scene.Scene;
 import javafx.scene.canvas.Canvas;
 import javafx.scene.canvas.GraphicsContext;
 
 import javafx.scene.control.Label;
 import javafx.scene.control.Slider;
+import javafx.scene.effect.Blend;
+import javafx.scene.effect.BlendMode;
+import javafx.scene.effect.BoxBlur;
+import javafx.scene.effect.GaussianBlur;
 import javafx.scene.layout.*;
+import javafx.scene.paint.Color;
 import javafx.scene.shape.Rectangle;
 import javafx.scene.text.Font;
-import javafx.scene.text.Text;
+import javafx.stage.Modality;
 import javafx.stage.Screen;
+import javafx.stage.Stage;
+import javafx.stage.StageStyle;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LogManager;
 
 import java.io.IOException;
 import java.net.URL;
-import java.util.List;
-import java.util.ResourceBundle;
+import java.util.*;
 import java.util.stream.Collectors;
 
 public class GameSceneController implements Initializable {
 
     private static final Logger log = LogManager.getLogger(GameSceneController.class);
-
+    @FXML
+    private BorderPane gameScene;
     @FXML
     private Canvas canvas2D;
     @FXML
@@ -58,6 +66,9 @@ public class GameSceneController implements Initializable {
     private Label playerHp, enemyHp, time, round;
     @FXML
     private StackPane stackPane;
+    private final Pane pause = new SceneLoader().loadScene("Pause");
+
+    private boolean wasPaused;
     Screen screen = Screen.getPrimary();
     Rectangle2D visualBounds = screen.getVisualBounds();
     final private double healthBarWidth = screen.getBounds().getWidth() / 5;
@@ -211,6 +222,13 @@ public class GameSceneController implements Initializable {
                     graphicsContext2D.clearRect(0, 0, canvas2D.getWidth(), canvas2D.getHeight());
                     renderContent(graphicsContext2D);
                     updateContent();
+                    if (wasPaused) {
+                        resume();
+                    }
+                } else {
+                    if (!wasPaused) {
+                        pauseMenu();
+                    }
                 }
             }
         };
@@ -218,6 +236,34 @@ public class GameSceneController implements Initializable {
         log.debug("Game loop started");
     }
 
+    private void pauseMenu() {
+//        setting blur in for loop otherwise all child node will inherit blur from root including pause menu
+        for (Node child : gameScene.getChildren()) {
+            if (child != stackPane) {
+                child.setEffect(new GaussianBlur(10));
+            }
+        }
+        for (Node child : stackPane.getChildren()) {
+            if (child != pause) {
+                child.setEffect(new GaussianBlur(10));
+            }
+        }
+        stackPane.getChildren().add(pause);
+        wasPaused = true;
+    }
+
+    private void resume() {
+        for (Node child : gameScene.getChildren()) {
+            child.setEffect(null);
+        }
+        for (Node child : stackPane.getChildren()) {
+            child.setEffect(null);
+        }
+        stackPane.getChildren().remove(pause);
+        wasPaused = false;
+    }
+
+
     private void updateContent() {
         player.updateEntityMovement(this);
         enemy.updateEntityMovement(this);
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/PauseController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PauseController.java
new file mode 100644
index 0000000000000000000000000000000000000000..bdd579ac2b471a309d265e62e932c883879b829a
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PauseController.java
@@ -0,0 +1,32 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader;
+import de.hdm_stuttgart.battlearena.Model.Inputs.InputHandler;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.layout.VBox;
+
+import java.io.IOException;
+import java.util.Objects;
+
+public class PauseController {
+    @FXML
+    private VBox parent;
+
+    @FXML
+    private void resume() {
+        InputHandler.getInstance().setPause(false);
+    }
+
+    @FXML
+    private void settings() {
+        parent.getChildren().clear();
+        parent.getChildren().add(new SceneLoader().loadScene("PauseSettings"));
+    }
+
+    @FXML
+    private void mainMenu() throws IOException {
+//        TODO: stop game scene
+        parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MenuBorderPane.fxml"))));
+    }
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/PauseSettingsController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PauseSettingsController.java
new file mode 100644
index 0000000000000000000000000000000000000000..8ea6dba3d1e0f02ecfe80d07412cbe1a5266b540
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PauseSettingsController.java
@@ -0,0 +1,54 @@
+package de.hdm_stuttgart.battlearena.Controller;
+
+import de.hdm_stuttgart.battlearena.Controller.Utilities.MusicPlayerSingleton;
+import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader;
+import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.control.Slider;
+import javafx.scene.layout.VBox;
+
+import java.net.URL;
+import java.util.ResourceBundle;
+
+public class PauseSettingsController implements Initializable {
+    @FXML
+    private VBox parent;
+    @FXML
+    private Slider musicSlider, sfxSlider;
+    SceneLoader sceneLoader = new SceneLoader();
+    private int musicVolume, sfxVolume;
+    MusicPlayerSingleton musicPlayer = MusicPlayerSingleton.getInstance();
+    Persistence persistence = Persistence.getInstance();
+
+    @Override
+    public void initialize(URL url, ResourceBundle resourceBundle) {
+        setMusicVolume();
+        setSfxVolume();
+    }
+
+    @FXML
+    private void backButton() {
+        parent.getChildren().clear();
+        parent.getChildren().add(sceneLoader.loadScene("Pause"));
+    }
+
+    private void setMusicVolume() {
+        musicSlider.setValue(persistence.getSettings().getMusicVolume());
+        musicSlider.valueProperty().addListener((observableValue, oldValue, newValue) -> {
+            musicVolume = newValue.intValue();
+            persistence.getSettings().setMusicVolume(musicVolume);
+            musicPlayer.getMediaPlayer().setVolume((double) musicVolume / 100);
+        });
+    }
+
+    private void setSfxVolume(){
+        sfxSlider.setValue(persistence.getSettings().getSfxVolume());
+        sfxSlider.valueProperty().addListener(((observableValue, oldValue, newValue) -> {
+            sfxVolume = newValue.intValue();
+            persistence.getSettings().setSfxVolume(sfxVolume);
+//            sfxPlayer.getMediaPlayer().setVolume((double) sfxVolume / 100);
+        }));
+    }
+}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/ScreenClasses.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/ScreenClasses.java
deleted file mode 100644
index 469d628a724f3761c23b14fc85f602966e3d0720..0000000000000000000000000000000000000000
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/ScreenClasses.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package de.hdm_stuttgart.battlearena.Controller.Utilities;
-
-public enum ScreenClasses {
-//    enums have a range because the screen calculations are not precise, especially with screen scaling in the OS settings
-    INCH27(26, 28),
-    INCH24(23, 25),
-    INCH13_SURFACE(12, 14);
-
-    final int lBound, uBound;
-
-    ScreenClasses(int lBound, int uBound) {
-        this.lBound = lBound;
-        this.uBound = uBound;
-    }
-
-    public static ScreenClasses inRange(int inches) {
-        for (ScreenClasses screens : ScreenClasses.values()) {
-            if (screens.isInRange(inches)) {
-                return screens;
-            }
-        }
-        return null;
-    }
-
-    private boolean isInRange(int inches) {
-        return inches >= lBound && inches <= uBound;
-    }
-}
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Inputs/InputHandler.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Inputs/InputHandler.java
index d65fd87e2145d57c442b18513b405065a09247ec..324829b13054eb7fb6f3f2e3d7d3a611e90e3468 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Inputs/InputHandler.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Inputs/InputHandler.java
@@ -129,6 +129,10 @@ public class InputHandler {
         return isPause;
     }
 
+    public void setPause(boolean pause) {
+        isPause = pause;
+    }
+
     public boolean isMoveUp() {
         return moveUp;
     }
diff --git a/src/main/resources/fxml/Pause.fxml b/src/main/resources/fxml/Pause.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..318f3a455528b5221ee4e24caf8382d745f94ce2
--- /dev/null
+++ b/src/main/resources/fxml/Pause.fxml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.layout.VBox?>
+
+
+<VBox fx:id="parent" alignment="CENTER" prefHeight="400.0" prefWidth="600.0" spacing="20.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.PauseController">
+   <children>
+      <Button mnemonicParsing="false" onAction="#resume" text="Continue" />
+      <Button mnemonicParsing="false" text="Restart" />
+      <Button mnemonicParsing="false" onAction="#settings" text="Settings" />
+      <Button mnemonicParsing="false" onAction="#mainMenu" text="Main Menu" />
+   </children>
+</VBox>
diff --git a/src/main/resources/fxml/PauseSettings.fxml b/src/main/resources/fxml/PauseSettings.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..245ece5f4b8fdf6c78d643deb8af77e310b38dc9
--- /dev/null
+++ b/src/main/resources/fxml/PauseSettings.fxml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Slider?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Text?>
+
+<VBox fx:id="parent" alignment="CENTER" prefHeight="400.0" prefWidth="600.0" spacing="20.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.PauseSettingsController">
+   <children>
+      <HBox alignment="CENTER">
+         <children>
+            <VBox alignment="TOP_CENTER" spacing="10.0">
+               <children>
+                  <VBox alignment="CENTER" VBox.vgrow="ALWAYS">
+                     <children>
+                        <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Music volume:" />
+                        <Slider fx:id="musicSlider" blockIncrement="25.0" majorTickUnit="100.0" minorTickCount="1" prefHeight="14.0" prefWidth="480.0" showTickLabels="true" value="75.0" VBox.vgrow="NEVER" />
+                     </children>
+                  </VBox>
+                  <VBox alignment="CENTER" VBox.vgrow="ALWAYS">
+                     <children>
+                        <Text strokeType="OUTSIDE" strokeWidth="0.0" text="SFX volume:" />
+                        <Slider fx:id="sfxSlider" blockIncrement="25.0" majorTickUnit="100.0" minorTickCount="1" prefHeight="14.0" prefWidth="480.0" showTickLabels="true" value="75.0" />
+                     </children>
+                  </VBox>
+               </children>
+            </VBox>
+         </children>
+      </HBox>
+      <Button mnemonicParsing="false" onAction="#backButton" text="Back" />
+   </children>
+</VBox>
diff --git a/src/main/resources/styles/style.css b/src/main/resources/styles/style.css
index c6d0d1c3446bc10e5bdcf9c19cc7c6d94fb33bce..391b9362f097e727cf78085a42f2c94d0ffcc14f 100644
--- a/src/main/resources/styles/style.css
+++ b/src/main/resources/styles/style.css
@@ -44,7 +44,7 @@
 }
 
 #gameScene {
-    -fx-background-image: url("../textures/images/game_scene_backgorund.jpg");
+    -fx-background-image: url("../textures/images/game_scene_backgorund.png");
     -fx-background-size: cover;
 }
 
diff --git a/src/main/resources/textures/images/game_scene_backgorund.png b/src/main/resources/textures/images/game_scene_backgorund.png
new file mode 100644
index 0000000000000000000000000000000000000000..f634cef655e4982edc226cf79c3f654ea9a76926
Binary files /dev/null and b/src/main/resources/textures/images/game_scene_backgorund.png differ