diff --git a/scribus/scpaths.cpp b/scribus/scpaths.cpp
index 74b8fdf14..d17fb3e0f 100644
--- a/scribus/scpaths.cpp
+++ b/scribus/scpaths.cpp
@@ -656,11 +656,16 @@ QString ScPaths::tempFileDir()
 		// GetTempPath may return Windows directory, better not use this one
 		// for temporary files
 		if (QDir(tempPath).exists() && tempPath != windowsSpecialDir(CSIDL_WINDOWS))
-			return tempPath;
+		{
+			QDir tempAppDirectory(tempPath + QString::number(QCoreApplication::applicationPid()));
+			if (!tempAppDirectory.exists())
+				tempAppDirectory.mkpath(tempAppDirectory.absolutePath());
+			return tempAppDirectory.absolutePath() + "/";
+		}
 	}
 #endif
 
-	QDir tempAppDirectory(applicationDataDir() + "temp/");
+	QDir tempAppDirectory(applicationDataDir() + "temp/" + QString::number(QCoreApplication::applicationPid()));
 	if (!tempAppDirectory.exists())
 		tempAppDirectory.mkpath(tempAppDirectory.absolutePath());
 	return tempAppDirectory.absolutePath() + "/";
diff --git a/scribus/scribusapp.cpp b/scribus/scribusapp.cpp
index 159ac2f0e..330e1c993 100644
--- a/scribus/scribusapp.cpp
+++ b/scribus/scribusapp.cpp
@@ -110,6 +110,8 @@ ScribusQApp::~ScribusQApp()
 {
 	delete m_ScCore;
 	delete m_scDLMgr;
+	QDir tmpDir (ScPaths::tempFileDir());
+	tmpDir.rmdir (ScPaths::tempFileDir());
 	LanguageManager::deleteInstance();
 }
 
