diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index 7cc1a62abe4..11d0fb77c82 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -585,7 +585,7 @@ static HRESULT WINAPI HTMLElement_get_document(IHTMLElement *iface, IDispatch **
if(!p)
return E_POINTER;
- *p = (IDispatch*)This->node.doc;
+ *p = (IDispatch*)HTMLDOC(This->node.doc);
IDispatch_AddRef(*p);
return S_OK;
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index cf8f8f054c1..e620e5631d3 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -3343,6 +3343,11 @@ static void test_elems(IHTMLDocument2 *doc)
ok(type == 1, "type=%ld\n", type);
IHTMLSelectElement_Release(select);
+
+ hres = IHTMLElement_get_document(elem, &disp);
+ ok(hres == S_OK, "get_document failed: %08x\n", hres);
+ ok(iface_cmp((IUnknown*)disp, (IUnknown*)doc), "disp != doc\n");
+
IHTMLElement_Release(elem);
}