diff --git a/Source/NDisplayLaunchButton/Private/NDisplayLaunchButton.cpp b/Source/NDisplayLaunchButton/Private/NDisplayLaunchButton.cpp
index aecc2ef83c528777eeaf0938ccc7948ebf262e99..fe6002f49b7bf3bed098b925bb81a3d5f7e969bc 100644
--- a/Source/NDisplayLaunchButton/Private/NDisplayLaunchButton.cpp
+++ b/Source/NDisplayLaunchButton/Private/NDisplayLaunchButton.cpp
@@ -45,6 +45,46 @@ void FNDisplayLaunchButtonModule::ShutdownModule()
 	FNDisplayLaunchButtonCommands::Unregister();
 }
 
+/*
+ * Copied from DisplayClusterEditorSettings.cpp:
+ * Switches on the nDisplay Plugin and changes the Editor Runtime
+ */
+void FNDisplayLaunchButtonModule::ChangeNDisplayStateAndStoreConfig(bool NewState, bool& OldState)
+{
+		
+		static const FString PlatformName = FPlatformProperties::PlatformName();
+		static const FString DefaultEnginePath = FString::Printf(TEXT("%s/DefaultEngine.ini"), *FPaths::SourceConfigDir());
+		static const FString DefaultPlatformEnginePath = FString::Printf(TEXT("%s%s/%sEngine.ini"), *FPaths::SourceConfigDir(), *PlatformName, *PlatformName);
+		static const FString DefaultGamePath   = FString::Printf(TEXT("%sDefaultGame.ini"), *FPaths::SourceConfigDir());
+
+		FString OldValue;
+		GConfig->GetString(TEXT("/Script/DisplayClusterEditor.DisplayClusterEditorSettings"), TEXT("bEnabled"), OldValue, DefaultEnginePath);
+		OldState = OldValue.ToBool();
+	
+		if (NewState)
+		{
+			// DefaultEngine.ini
+			GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("GameEngine"),                  TEXT("/Script/DisplayCluster.DisplayClusterGameEngine"),         DefaultPlatformEnginePath);
+			GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("UnrealEdEngine"),              TEXT("/Script/DisplayClusterEditor.DisplayClusterEditorEngine"), DefaultPlatformEnginePath);
+			GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("GameViewportClientClassName"), TEXT("/Script/DisplayCluster.DisplayClusterViewportClient"),     DefaultPlatformEnginePath);
+
+			// DefaultGame.ini
+			GConfig->SetString(TEXT("/Script/EngineSettings.GeneralProjectSettings"), TEXT("bUseBorderlessWindow"), TEXT("True"), DefaultGamePath);
+		}
+		else
+		{
+			GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("GameEngine"),                  TEXT("/Script/Engine.GameEngine"),         DefaultPlatformEnginePath);
+			GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("UnrealEdEngine"),              TEXT("/Script/UnrealEd.UnrealEdEngine"),   DefaultPlatformEnginePath);
+			GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("GameViewportClientClassName"), TEXT("/Script/Engine.GameViewportClient"), DefaultPlatformEnginePath);
+
+			// DefaultGame.ini
+			GConfig->SetString(TEXT("/Script/EngineSettings.GeneralProjectSettings"), TEXT("bUseBorderlessWindow"), TEXT("False"), DefaultGamePath);
+		}
+
+		GConfig->Flush(false, DefaultPlatformEnginePath);
+		GConfig->Flush(false, DefaultGamePath);
+}
+
 /**
  * Since some plugins interfere with nDisplay execution, this function can disable them
  * @param PluginName - Name of the plugin to enable/disable
@@ -158,9 +198,10 @@ void FNDisplayLaunchButtonModule::PluginButtonClicked()
 		if (Settings->TracehostIP.Len() > 0) InsightParameters.Append(FString::Printf(TEXT(" -tracehost=%s"), *Settings->TracehostIP));
 	}
 	
-	/* Disable Plugins temporarily */
+	/* Enable/Disable Plugins temporarily */
 	if(!ChangePluginStateAndStoreConfig("SteamVR", false, SteamVRState)) return;
 	if(!ChangePluginStateAndStoreConfig("OculusVR", false, OculusVRState)) return;
+	ChangeNDisplayStateAndStoreConfig(true, nDisplayState);
 
 	/* Trigger Editor save. Needed, else old version will be launched every time */
 	if (!UEditorLoadingAndSavingUtils::SaveDirtyPackagesWithDialog(true, true)) return;
@@ -271,6 +312,7 @@ void FNDisplayLaunchButtonModule::PluginButtonClicked()
 	/* Restore Plugin States */
 	ChangePluginStateAndStoreConfig("SteamVR", SteamVRState, SteamVRState);
 	ChangePluginStateAndStoreConfig("OculusVR", OculusVRState, OculusVRState);
+	ChangeNDisplayStateAndStoreConfig(nDisplayState, nDisplayState);
 }
 
 /**
diff --git a/Source/NDisplayLaunchButton/Public/NDisplayLaunchButton.h b/Source/NDisplayLaunchButton/Public/NDisplayLaunchButton.h
index f36d47e10f9f479cfe56772793acab37a6e99a10..be25dd16869003b691785d495f2d6ffa20f194ec 100644
--- a/Source/NDisplayLaunchButton/Public/NDisplayLaunchButton.h
+++ b/Source/NDisplayLaunchButton/Public/NDisplayLaunchButton.h
@@ -20,6 +20,7 @@ public:
 	/** IModuleInterface implementation */
 	virtual void StartupModule() override;
 	virtual void ShutdownModule() override;
+	static void ChangeNDisplayStateAndStoreConfig(bool NewState, bool& OldState);
 	bool ChangePluginStateAndStoreConfig(FString PluginName, bool NewState, bool& OldState) const;
 	static FString GetEditorExecutableName();
 	static FString GetFilePathInProject(FString FileName);
@@ -34,4 +35,5 @@ public:
 private:
 	bool SteamVRState = false;
 	bool OculusVRState = false;
+	bool nDisplayState = false;
 };