diff --git a/src/gui/kernel/kernel.pri b/src/gui/kernel/kernel.pri
index 91374fe2dd2b048abc4a4e2812d474293f5288e6..3c019fc5b5d3e7840f6ebf0f0bf818073fa8c0d2 100644
--- a/src/gui/kernel/kernel.pri
+++ b/src/gui/kernel/kernel.pri
@@ -31,6 +31,8 @@ HEADERS += \
         kernel/qplatformclipboard.h \
         kernel/qplatformnativeinterface.h \
         kernel/qplatformmenu.h \
+        kernel/qshapedpixmapdndwindow_p.h \
+        kernel/qsimpledrag_p.h \
         kernel/qsurfaceformat.h \
         kernel/qguiapplication.h \
         kernel/qguiapplication_p.h \
@@ -89,6 +91,8 @@ SOURCES += \
         kernel/qplatformclipboard.cpp \
         kernel/qplatformnativeinterface.cpp \
         kernel/qsessionmanager.cpp \
+        kernel/qshapedpixmapdndwindow.cpp \
+        kernel/qsimpledrag.cpp \
         kernel/qsurfaceformat.cpp \
         kernel/qguiapplication.cpp \
         kernel/qwindow.cpp \
diff --git a/src/gui/kernel/qplatformintegration.cpp b/src/gui/kernel/qplatformintegration.cpp
index e82e30df8088084ee5c717c83f2afd38681f06e6..e4f45ebb6ebb8dd1c89259b2b85c66091ac88557 100644
--- a/src/gui/kernel/qplatformintegration.cpp
+++ b/src/gui/kernel/qplatformintegration.cpp
@@ -49,6 +49,7 @@
 #include <QtGui/private/qpixmap_raster_p.h>
 #include <qpa/qplatformscreen_p.h>
 #include <private/qdnd_p.h>
+#include <private/qsimpledrag_p.h>
 
 QT_BEGIN_NAMESPACE
 
@@ -99,7 +100,11 @@ QPlatformClipboard *QPlatformIntegration::clipboard() const
 */
 QPlatformDrag *QPlatformIntegration::drag() const
 {
-    return 0;
+    static QSimpleDrag *drag = 0;
+    if (!drag) {
+        drag = new QSimpleDrag;
+    }
+    return drag;
 }
 #endif
 
diff --git a/src/platformsupport/dnd/qshapedpixmapdndwindow.cpp b/src/gui/kernel/qshapedpixmapdndwindow.cpp
similarity index 100%
rename from src/platformsupport/dnd/qshapedpixmapdndwindow.cpp
rename to src/gui/kernel/qshapedpixmapdndwindow.cpp
diff --git a/src/platformsupport/dnd/qshapedpixmapdndwindow_p.h b/src/gui/kernel/qshapedpixmapdndwindow_p.h
similarity index 100%
rename from src/platformsupport/dnd/qshapedpixmapdndwindow_p.h
rename to src/gui/kernel/qshapedpixmapdndwindow_p.h
diff --git a/src/platformsupport/dnd/qsimpledrag.cpp b/src/gui/kernel/qsimpledrag.cpp
similarity index 99%
rename from src/platformsupport/dnd/qsimpledrag.cpp
rename to src/gui/kernel/qsimpledrag.cpp
index f2ff177055777aefd41cee2984532d709f0744b9..f6912a2d577f4130befd60393ec07b930b6ffb4c 100644
--- a/src/platformsupport/dnd/qsimpledrag.cpp
+++ b/src/gui/kernel/qsimpledrag.cpp
@@ -62,7 +62,7 @@
 #include <private/qguiapplication_p.h>
 #include <private/qdnd_p.h>
 
-#include <QtPlatformSupport/private/qshapedpixmapdndwindow_p.h>
+#include <private/qshapedpixmapdndwindow_p.h>
 
 QT_BEGIN_NAMESPACE
 
diff --git a/src/platformsupport/dnd/qsimpledrag_p.h b/src/gui/kernel/qsimpledrag_p.h
similarity index 96%
rename from src/platformsupport/dnd/qsimpledrag_p.h
rename to src/gui/kernel/qsimpledrag_p.h
index 10237b36d799e459d83c08b83677592238af7589..36ea4c1ec542af2e51c91a9596aa0142444a0ebc 100644
--- a/src/platformsupport/dnd/qsimpledrag_p.h
+++ b/src/gui/kernel/qsimpledrag_p.h
@@ -56,7 +56,7 @@ class QEventLoop;
 class QDropData;
 class QShapedPixmapWindow;
 
-class QBasicDrag : public QPlatformDrag, public QObject
+class Q_GUI_EXPORT QBasicDrag : public QPlatformDrag, public QObject
 {
 public:
     virtual ~QBasicDrag();
@@ -99,7 +99,7 @@ private:
     QShapedPixmapWindow *m_drag_icon_window;
 };
 
-class QSimpleDrag : public QBasicDrag
+class Q_GUI_EXPORT QSimpleDrag : public QBasicDrag
 {
 public:
     QSimpleDrag();
diff --git a/src/platformsupport/dnd/dnd.pri b/src/platformsupport/dnd/dnd.pri
deleted file mode 100644
index 47feb81ef224d2a7d276a80eb903cf50ad4e774e..0000000000000000000000000000000000000000
--- a/src/platformsupport/dnd/dnd.pri
+++ /dev/null
@@ -1,6 +0,0 @@
-HEADERS += \
-    $$PWD/qsimpledrag_p.h \
-    $$PWD/qshapedpixmapdndwindow_p.h
-SOURCES += \
-    $$PWD/qsimpledrag.cpp \
-    $$PWD/qshapedpixmapdndwindow.cpp
diff --git a/src/platformsupport/platformsupport.pro b/src/platformsupport/platformsupport.pro
index 4cb1f2c1bfa66e3f2568cb94bbd413b5f4f29910..da87f395fd3c463800e806c16f996cf8976225fc 100644
--- a/src/platformsupport/platformsupport.pro
+++ b/src/platformsupport/platformsupport.pro
@@ -9,7 +9,6 @@ PRECOMPILED_HEADER = ../corelib/global/qt_pch.h
 
 include(cfsocketnotifier/cfsocketnotifier.pri)
 include(cglconvenience/cglconvenience.pri)
-include(dnd/dnd.pri)
 include(eglconvenience/eglconvenience.pri)
 include(eventdispatchers/eventdispatchers.pri)
 include(fbconvenience/fbconvenience.pri)
diff --git a/src/plugins/platforms/cocoa/qcocoadrag.h b/src/plugins/platforms/cocoa/qcocoadrag.h
index 6e29fd1a78e786d92261a95d01cc6a3536098ddc..80259df6006bba44caf216e324136e8af6119f3e 100644
--- a/src/plugins/platforms/cocoa/qcocoadrag.h
+++ b/src/plugins/platforms/cocoa/qcocoadrag.h
@@ -45,7 +45,7 @@
 #include <Cocoa/Cocoa.h>
 #include <QtGui>
 #include <qpa/qplatformdrag.h>
-#include <QtPlatformSupport/private/qsimpledrag_p.h>
+#include <private/qsimpledrag_p.h>
 
 #include <QtGui/private/qdnd_p.h>
 
diff --git a/src/plugins/platforms/qnx/qqnxintegration.cpp b/src/plugins/platforms/qnx/qqnxintegration.cpp
index 072f60dff87c338429172bf8e7f80b11321f9b0b..feb05e3093451e05923ad4832feecaee43948f3f 100644
--- a/src/plugins/platforms/qnx/qqnxintegration.cpp
+++ b/src/plugins/platforms/qnx/qqnxintegration.cpp
@@ -89,7 +89,7 @@
 #include <QtGui/QOpenGLContext>
 #endif
 
-#include <QtPlatformSupport/private/qsimpledrag_p.h>
+#include <private/qsimpledrag_p.h>
 
 #include <QtCore/QDebug>
 #include <QtCore/QHash>
diff --git a/src/plugins/platforms/xcb/qxcbdrag.cpp b/src/plugins/platforms/xcb/qxcbdrag.cpp
index db736cef4e7388269ac6cfd239de51e55b4ec983..4961e0377ccc842e03ae2ce7a745315a4b36898a 100644
--- a/src/plugins/platforms/xcb/qxcbdrag.cpp
+++ b/src/plugins/platforms/xcb/qxcbdrag.cpp
@@ -57,8 +57,8 @@
 
 #include <qpa/qwindowsysteminterface.h>
 
-#include <QtPlatformSupport/private/qshapedpixmapdndwindow_p.h>
-#include <QtPlatformSupport/private/qsimpledrag_p.h>
+#include <private/qshapedpixmapdndwindow_p.h>
+#include <private/qsimpledrag_p.h>
 
 QT_BEGIN_NAMESPACE
 
diff --git a/src/plugins/platforms/xcb/qxcbdrag.h b/src/plugins/platforms/xcb/qxcbdrag.h
index 5678c2d3034bf51f14c25784f3781a672b7f142a..5648f70d9e8400c81597c3a0369704cdaf3b7f95 100644
--- a/src/plugins/platforms/xcb/qxcbdrag.h
+++ b/src/plugins/platforms/xcb/qxcbdrag.h
@@ -43,7 +43,7 @@
 #define QXCBDRAG_H
 
 #include <qpa/qplatformdrag.h>
-#include <QtPlatformSupport/private/qsimpledrag_p.h>
+#include <private/qsimpledrag_p.h>
 #include <qxcbobject.h>
 #include <xcb/xcb.h>
 #include <qlist.h>