diff --git a/desktop/desktop.cpp b/desktop/desktop.cpp
index 0c5d62e..22c8bcf 100644
--- a/desktop/desktop.cpp
+++ b/desktop/desktop.cpp
@@ -1365,10 +1365,6 @@ bool ApplicationInstanceStart(int64_t applicationID, EsApplicationStartupInforma
 		instance->tab->notRespondingInstance = nullptr;
 	}
 
-	ApplicationInstanceCleanup(instance);
-
-	instance->application = application;
-
 	ApplicationProcess *process = application->singleProcess;
 
 	if (application->createInstance) {
@@ -1524,9 +1520,15 @@ bool ApplicationInstanceStart(int64_t applicationID, EsApplicationStartupInforma
 		application->singleProcess = process;
 	}
 
-	instance->process = process;
+	// Increment the instance count before cleaning up the old process,
+	// so that when going between 2 Desktop instances,
+	// the Desktop process doesn't exit.
 	process->instanceCount++;
 
+	ApplicationInstanceCleanup(instance);
+	instance->application = application;
+	instance->process = process;
+
 	if (startupInformation->documentID) {
 		instance->documentID = startupInformation->documentID;
 		OpenDocumentOpenReference(instance->documentID);