diff --git a/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp b/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp
index 5ca83fa9f22fac4ab1939bef18ed66c4e3166dc9..71c197a32cd264d4a10d4364e2ce7a7780286e4a 100644
--- a/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp
+++ b/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp
@@ -470,6 +470,15 @@ HRESULT STDMETHODCALLTYPE QWindowsMsaaAccessible::Invoke(long dispIdMember,
     return hr;
 }
 
+static const QWindow *windowOf(const QAccessibleInterface *ai)
+{
+    for ( ; ai; ai = ai->parent()) {
+        if (const QWindow *window = ai->window())
+            return window;
+    }
+    return Q_NULLPTR;
+}
+
 /*
   IAccessible
 
@@ -498,7 +507,7 @@ HRESULT STDMETHODCALLTYPE QWindowsMsaaAccessible::accHitTest(long xLeft, long yT
     if (!accessible)
         return E_FAIL;
 
-    const QPoint pos = QHighDpi::fromNativeLocalPosition(QPoint(xLeft, yTop), accessible->window());
+    const QPoint pos = QHighDpi::fromNativeLocalPosition(QPoint(xLeft, yTop), windowOf(accessible));
     QAccessibleInterface *child = accessible->childAt(pos.x(), pos.y());
     if (child == 0) {
         // no child found, return this item if it contains the coordinates
@@ -541,7 +550,7 @@ HRESULT STDMETHODCALLTYPE QWindowsMsaaAccessible::accLocation(long *pxLeft, long
     QAccessibleInterface *acc = childPointer(accessible, varID);
     if (!acc || !acc->isValid())
         return E_FAIL;
-    const QRect rect = QHighDpi::toNativePixels(acc->rect(), accessible->window());
+    const QRect rect = QHighDpi::toNativePixels(acc->rect(), windowOf(accessible));
 
     *pxLeft = rect.x();
     *pyTop = rect.y();