diff --git a/src/libs/qmljs/qmljsplugindumper.cpp b/src/libs/qmljs/qmljsplugindumper.cpp
index 8ef89ebb4315cea6fd8462bcce5132c0b98c79c6..16d84290a715847df8ed49b97508053bbffc47b3 100644
--- a/src/libs/qmljs/qmljsplugindumper.cpp
+++ b/src/libs/qmljs/qmljsplugindumper.cpp
@@ -515,8 +515,12 @@ void PluginDumper::loadQmltypesFile(const QStringList &qmltypesFilePaths,
 void PluginDumper::runQmlDump(const QmlJS::ModelManagerInterface::ProjectInfo &info,
     const QStringList &arguments, const QString &importPath)
 {
+    QDir wd = QDir(importPath);
+    wd.cdUp();
     QProcess *process = new QProcess(this);
     process->setEnvironment(info.qmlDumpEnvironment.toStringList());
+    QString workingDir = wd.canonicalPath();
+    process->setWorkingDirectory(workingDir);
     connect(process, static_cast<void (QProcess::*)(int)>(&QProcess::finished),
             this, &PluginDumper::qmlPluginTypeDumpDone);
     connect(process, static_cast<void (QProcess::*)(QProcess::ProcessError)>(&QProcess::error),
@@ -567,7 +571,7 @@ void PluginDumper::dump(const Plugin &plugin)
         args << QLatin1String("-nonrelocatable");
     args << plugin.importUri;
     args << plugin.importVersion;
-    args << plugin.importPath;
+    args << (plugin.importPath.isEmpty() ? QLatin1String(".") : plugin.importPath);
     runQmlDump(info, args, plugin.qmldirPath);
 }