diff --git a/source/game/GameStates.cpp b/source/game/GameStates.cpp
index 4413109033ae92f86ec4b8da350e665a4845555f..4241ef43b875ce9794ce95b8eefaef06a0aae40a 100644
--- a/source/game/GameStates.cpp
+++ b/source/game/GameStates.cpp
@@ -27,15 +27,27 @@ void CMainMenuGameState::activate()
 {
 	GameData::m_pGUIStack->setActiveDesktop(m_pDesktop);
 
-	if (GameData::m_pGameLayer)
-		GameData::m_pGameLayer->play(false);
-
-	if (GameData::m_pGuiLayer)
+	if(GameData::m_pGuiLayer)
 	{
 		GameData::m_pGuiLayer->play(true);
 
-		if (GameData::m_pSoundPlayer)
+		if(GameData::m_pSoundPlayer)
+		{
 			GameData::m_pSoundPlayer->play();
+		}
+	}
+}
+
+void CMainMenuGameState::deactivate()
+{
+	if(GameData::m_pGuiLayer)
+	{
+		GameData::m_pGuiLayer->play(false);
+
+		if(GameData::m_pSoundPlayer)
+		{
+			GameData::m_pSoundPlayer->stop();
+		}
 	}
 }
 
@@ -61,6 +73,31 @@ CIngameMenuGameState::~CIngameMenuGameState()
 void CIngameMenuGameState::activate()
 {
 	GameData::m_pGUIStack->setActiveDesktop(m_pDesktop);
+
+	if(GameData::m_pGuiLayer)
+	{
+		GameData::m_pGuiLayer->play(true);
+
+		if(GameData::m_pSoundPlayer)
+		{
+			GameData::m_pSoundPlayer->play();
+		}
+	}
+}
+
+void CIngameMenuGameState::deactivate()
+{
+	GameData::m_pGUIStack->setActiveDesktop(m_pDesktop);
+
+	if(GameData::m_pGuiLayer)
+	{
+		GameData::m_pGuiLayer->play(false);
+
+		if(GameData::m_pSoundPlayer)
+		{
+			GameData::m_pSoundPlayer->stop();
+		}
+	}
 }
 
 //##########################################################################
@@ -76,15 +113,9 @@ void CIngameGameState::activate()
 	SSInput_SetEnable(true);
 	SPhysics_EnableSimulation();
 
-	if (GameData::m_pGameLayer)
-		GameData::m_pGameLayer->play(true);
-
-	if (GameData::m_pGuiLayer)
+	if(GameData::m_pGameLayer)
 	{
-		GameData::m_pGuiLayer->play(false);
-
-		if (GameData::m_pSoundPlayer)
-			GameData::m_pSoundPlayer->stop();
+		GameData::m_pGameLayer->play(true);
 	}
 }
 
@@ -96,15 +127,9 @@ void CIngameGameState::deactivate()
 	SSInput_SetEnable(false);
 	SPhysics_DisableSimulation();
 
-	if (GameData::m_pGameLayer)
-		GameData::m_pGameLayer->play(false);
-
-	if (GameData::m_pGuiLayer)
+	if(GameData::m_pGameLayer)
 	{
-		GameData::m_pGuiLayer->play(true);
-
-		if (GameData::m_pSoundPlayer)
-			GameData::m_pSoundPlayer->play();
+		GameData::m_pGameLayer->play(false);
 	}
 }
 
diff --git a/source/game/GameStates.h b/source/game/GameStates.h
index da4364658c24a8d13ca49e9a6535b7a6ba4256d4..4e23299023c89d96b6d5fe73ccdd6329911d91cc 100644
--- a/source/game/GameStates.h
+++ b/source/game/GameStates.h
@@ -4,26 +4,28 @@
 #include "IGameState.h"
 #include <gui/guimain.h>
 
-class CMainMenuGameState: public IGameState
+class CMainMenuGameState final: public IGameState
 {
 public:
 	CMainMenuGameState();
 	~CMainMenuGameState();
-	void activate();
+	void activate() override;
+	void deactivate() override;
 
 protected:
-	gui::IDesktop * m_pDesktop;
+	gui::IDesktop *m_pDesktop;
 };
 
-class CIngameMenuGameState: public IGameState
+class CIngameMenuGameState final: public IGameState
 {
 public:
 	CIngameMenuGameState();
 	~CIngameMenuGameState();
-	void activate();
+	void activate() override;
+	void deactivate() override;
 
 protected:
-	gui::IDesktop * m_pDesktop;
+	gui::IDesktop *m_pDesktop;
 };
 
 class CIngameGameState: public IGameState