diff --git a/dlls/mshtml/htmlstyle.c b/dlls/mshtml/htmlstyle.c
index e21753bf59e..9602f5e24ff 100644
--- a/dlls/mshtml/htmlstyle.c
+++ b/dlls/mshtml/htmlstyle.c
@@ -1473,7 +1473,7 @@ static HRESULT WINAPI HTMLStyle_put_marginTop(IHTMLStyle *iface, VARIANT v)
TRACE("(%p)->(v%d)\n", This, V_VT(&v));
- return set_nsstyle_attr_var(This->nsstyle, STYLEID_MARGIN_TOP, &v, 0);
+ return set_nsstyle_attr_var(This->nsstyle, STYLEID_MARGIN_TOP, &v, ATTR_FIX_PX);
}
static HRESULT WINAPI HTMLStyle_get_marginTop(IHTMLStyle *iface, VARIANT *p)
diff --git a/dlls/mshtml/tests/style.c b/dlls/mshtml/tests/style.c
index 4a0b9fb01db..183d3f41900 100644
--- a/dlls/mshtml/tests/style.c
+++ b/dlls/mshtml/tests/style.c
@@ -729,6 +729,18 @@ static void test_body_style(IHTMLStyle *style)
ok(!strcmp_wa(V_BSTR(&v), "6px"), "V_BSTR(marginTop) = %s\n", wine_dbgstr_w(V_BSTR(&v)));
VariantClear(&v);
+ V_VT(&v) = VT_I4;
+ V_I4(&v) = 5;
+ hres = IHTMLStyle_put_marginTop(style, v);
+ ok(hres == S_OK, "put_marginTop failed: %08x\n", hres);
+
+ str = (void*)0xdeadbeef;
+ hres = IHTMLStyle_get_marginTop(style, &v);
+ ok(hres == S_OK, "get_marginTop failed: %08x\n", hres);
+ ok(V_VT(&v) == VT_BSTR, "V_VT(marginTop) = %d\n", V_VT(&v));
+ ok(!strcmp_wa(V_BSTR(&v), "5px"), "V_BSTR(marginTop) = %s\n", wine_dbgstr_w(V_BSTR(&v)));
+ VariantClear(&v);
+
str = NULL;
hres = IHTMLStyle_get_border(style, &str);
ok(hres == S_OK, "get_border failed: %08x\n", hres);