diff --git a/tests/auto/cplusplus/cxx11/cxx11.pro b/tests/auto/cplusplus/cxx11/cxx11.pro
index f5525de36b154dad06ae311c09977ecaa7d8fc2a..410965df4ecb7427197f7509ee132aee86a501ef 100644
--- a/tests/auto/cplusplus/cxx11/cxx11.pro
+++ b/tests/auto/cplusplus/cxx11/cxx11.pro
@@ -1,5 +1,9 @@
 include(../../qttest.pri)
 include(../shared/shared.pri)
+
+# Inject the source dir for referencing test data from shadow builds.
+DEFINES += SRCDIR=\\\"$$PWD\\\"
+
 SOURCES += tst_cxx11.cpp
 OTHER_FILES += \
     data/inlineNamespace.1.cpp \
diff --git a/tests/auto/cplusplus/cxx11/tst_cxx11.cpp b/tests/auto/cplusplus/cxx11/tst_cxx11.cpp
index 940bfbec17fd530c829a5328c454656a93ce4620..31657dc86c2843a0bc8ce2cfcec170283f59941d 100644
--- a/tests/auto/cplusplus/cxx11/tst_cxx11.cpp
+++ b/tests/auto/cplusplus/cxx11/tst_cxx11.cpp
@@ -56,7 +56,8 @@ class tst_cxx11: public QObject
     */
     static QString testdata(const QString &name = QString())
     {
-        static const QString dataDirectory = QDir::currentPath() + QLatin1String("/data");
+        static const QString dataDirectory = QLatin1String(SRCDIR "/data");
+
         QString result = dataDirectory;
         if (!name.isEmpty()) {
             result += QLatin1Char('/');
diff --git a/tests/auto/cplusplus/preprocessor/preprocessor.pro b/tests/auto/cplusplus/preprocessor/preprocessor.pro
index 05c463833aa78b7b2d3a27c2b176eb83ba166d4c..cee378663ac8814814fbbe36f7a4c75573f6ab0b 100644
--- a/tests/auto/cplusplus/preprocessor/preprocessor.pro
+++ b/tests/auto/cplusplus/preprocessor/preprocessor.pro
@@ -1,7 +1,10 @@
 include(../../qttest.pri)
 include(../shared/shared.pri)
-SOURCES += tst_preprocessor.cpp
 
+# Inject the source dir for referencing test data from shadow builds.
+DEFINES += SRCDIR=\\\"$$PWD\\\"
+
+SOURCES += tst_preprocessor.cpp
 OTHER_FILES = \
     data/noPP.1.cpp \
     data/noPP.2.cpp \
diff --git a/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp b/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp
index 9b49ba45ef3d46324f1776ac59de1aa89d69e22d..945d0825f5a02b547c39f652d19ecf08fb714205 100644
--- a/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp
+++ b/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp
@@ -39,7 +39,7 @@ using namespace CPlusPlus;
 
 QByteArray loadSource(const QString &fileName)
 {
-    QFile inf(fileName);
+    QFile inf(QLatin1String(SRCDIR) + QLatin1Char('/') + fileName);
     if (!inf.open(QIODevice::ReadOnly | QIODevice::Text)) {
         qDebug("Cannot open \"%s\"", fileName.toUtf8().constData());
         return QByteArray();
@@ -53,7 +53,7 @@ QByteArray loadSource(const QString &fileName)
 
 void saveData(const QByteArray &data, const QString &fileName)
 {
-    QFile inf(fileName);
+    QFile inf(QLatin1String(SRCDIR) + QLatin1Char('/') + fileName);
     if (!inf.open(QIODevice::WriteOnly | QIODevice::Text)) {
         qDebug("Cannot open \"%s\"", fileName.toUtf8().constData());
         return;