diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 2ef689b5b9..70a396ec01 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -3699,6 +3699,7 @@ QCursor *QGuiApplication::overrideCursor()
  */
 void QGuiApplication::changeOverrideCursor(const QCursor &cursor)
 {
+    qDebug() << __FUNCTION__ << cursor;
     CHECK_QAPP_INSTANCE()
     if (qGuiApp->d_func()->cursor_list.isEmpty())
         return;
@@ -3790,6 +3791,7 @@ static inline void applyWindowCursor(const QList<QWindow *> &l)
 */
 void QGuiApplication::setOverrideCursor(const QCursor &cursor)
 {
+    qDebug() << __FUNCTION__ << cursor << "stacksize=" << qGuiApp->d_func()->cursor_list.size();
     CHECK_QAPP_INSTANCE()
     qGuiApp->d_func()->cursor_list.prepend(cursor);
     if (QPlatformCursor::capabilities().testFlag(QPlatformCursor::OverrideCursor))
@@ -3811,6 +3813,7 @@ void QGuiApplication::setOverrideCursor(const QCursor &cursor)
 */
 void QGuiApplication::restoreOverrideCursor()
 {
+    qDebug() << __FUNCTION__ << "stacksize=" << qGuiApp->d_func()->cursor_list.size();
     CHECK_QAPP_INSTANCE()
     if (qGuiApp->d_func()->cursor_list.isEmpty())
         return;
@@ -3821,7 +3824,7 @@ void QGuiApplication::restoreOverrideCursor()
             applyOverrideCursor(QGuiApplicationPrivate::screen_list, c);
         else
             applyCursor(QGuiApplicationPrivate::window_list, c);
-    } else {
+    } else {        
         if (QPlatformCursor::capabilities().testFlag(QPlatformCursor::OverrideCursor))
             clearOverrideCursor(QGuiApplicationPrivate::screen_list);
         applyWindowCursor(QGuiApplicationPrivate::window_list);
diff --git a/src/plugins/platforms/windows/qwindowscursor.cpp b/src/plugins/platforms/windows/qwindowscursor.cpp
index e1a5837201..0bd9784c7c 100644
--- a/src/plugins/platforms/windows/qwindowscursor.cpp
+++ b/src/plugins/platforms/windows/qwindowscursor.cpp
@@ -542,8 +542,10 @@ CursorHandlePtr QWindowsCursor::standardWindowCursor(Qt::CursorShape shape)
 {
     StandardCursorCache::Iterator it = m_standardCursorCache.find(shape);
     if (it == m_standardCursorCache.end()) {
-        if (const HCURSOR hc = QWindowsCursor::createCursorFromShape(shape, m_screen))
+        if (const HCURSOR hc = QWindowsCursor::createCursorFromShape(shape, m_screen)) {
+            qDebug() << __FUNCTION__ << shape << hc;
             it = m_standardCursorCache.insert(shape, CursorHandlePtr(new CursorHandle(hc)));
+        }
     }
     return it != m_standardCursorCache.end() ? it.value() : CursorHandlePtr(new CursorHandle);
 }
@@ -604,6 +606,10 @@ inline CursorHandlePtr QWindowsCursor::cursorHandle(const QCursor &cursor)
 
 void QWindowsCursor::changeCursor(QCursor *cursorIn, QWindow *window)
 {
+    if (cursorIn)
+        qDebug().noquote() << __FUNCTION__ << m_screen->name() << *cursorIn << window;
+    else
+        qDebug().noquote() << __FUNCTION__ << m_screen->name() << "null" << window;
     QWindowsWindow *platformWindow = QWindowsWindow::windowsWindowOf(window);
     if (!platformWindow) // Desktop/Foreign window.
         return;
@@ -624,10 +630,15 @@ void QWindowsCursor::changeCursor(QCursor *cursorIn, QWindow *window)
 void QWindowsCursor::setOverrideCursor(const QCursor &cursor)
 {
     const CursorHandlePtr wcursor = cursorHandle(cursor);
+    qDebug().noquote() << __FUNCTION__ << m_screen->name() << cursor << "setting" << wcursor->handle();
     if (wcursor->handle()) {
         const HCURSOR previousCursor = SetCursor(wcursor->handle());
-        if (m_overriddenCursor == nullptr)
+        qDebug().noquote() << __FUNCTION__ << "previousCursor" << previousCursor;
+        if (m_overriddenCursor == nullptr) {
             m_overriddenCursor = previousCursor;
+            qDebug().noquote() << __FUNCTION__ << "Set m_overriddenCursor" << m_overriddenCursor;
+        }
+
     } else {
         qWarning("%s: Unable to obtain system cursor for %d",
                  __FUNCTION__, cursor.shape());
@@ -636,6 +647,7 @@ void QWindowsCursor::setOverrideCursor(const QCursor &cursor)
 
 void QWindowsCursor::clearOverrideCursor()
 {
+    qDebug().noquote() << __FUNCTION__ <<  m_screen->name() <<"m_overriddenCursor=" << m_overriddenCursor;
     if (m_overriddenCursor) {
         SetCursor(m_overriddenCursor);
         m_overriddenCursor = nullptr;
diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp
index 3909c64c53..73f7241a1c 100644
--- a/src/plugins/platforms/windows/qwindowswindow.cpp
+++ b/src/plugins/platforms/windows/qwindowswindow.cpp
@@ -2419,17 +2419,22 @@ static inline bool applyNewCursor(const QWindow *w)
 
 void QWindowsWindow::applyCursor()
 {
-    if (static_cast<const QWindowsCursor *>(screen()->cursor())->hasOverrideCursor())
+    qDebug() << __FUNCTION__ << window();
+    if (static_cast<const QWindowsCursor *>(screen()->cursor())->hasOverrideCursor()) {
+        qDebug() << __FUNCTION__ << "Bail out override";
         return;
+    }
 #ifndef QT_NO_CURSOR
     if (m_cursor->isNull()) { // Recurse up to parent with non-null cursor. Set default for toplevel.
         if (const QWindow *p = window()->parent()) {
             if (QWindowsWindow *platformWindow = QWindowsWindow::windowsWindowOf(p))
                 platformWindow->applyCursor();
         } else {
+            qDebug() << __FUNCTION__ << window() << "SetCursor default(" << defaultCursor(window())->handle();
             SetCursor(defaultCursor(window())->handle());
         }
     } else {
+        qDebug() << __FUNCTION__ << window() << "SetCursor(" << m_cursor->handle();
         SetCursor(m_cursor->handle());
     }
 #endif
@@ -2438,9 +2443,10 @@ void QWindowsWindow::applyCursor()
 void QWindowsWindow::setCursor(const CursorHandlePtr &c)
 {
 #ifndef QT_NO_CURSOR
+    qDebug() << __FUNCTION__ << window() << c->handle();
     if (c->handle() != m_cursor->handle()) {
         const bool apply = applyNewCursor(window());
-        qCDebug(lcQpaWindows) << window() << __FUNCTION__
+        qDebug() << window() << __FUNCTION__
             << c->handle() << " doApply=" << apply;
         m_cursor = c;
         if (apply)
