diff --git a/dlls/d2d1/render_target.c b/dlls/d2d1/render_target.c index e4a4ad43a7b..ec2fec10197 100644 --- a/dlls/d2d1/render_target.c +++ b/dlls/d2d1/render_target.c @@ -1439,7 +1439,7 @@ static void STDMETHODCALLTYPE d2d_d3d_render_target_SetDpi(ID2D1RenderTarget *if dpi_x = 96.0f; dpi_y = 96.0f; } - else if (dpi_x == 0.0f || dpi_y == 0.0f) + else if (dpi_x <= 0.0f || dpi_y <= 0.0f) return; render_target->dpi_x = dpi_x; diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index c7d67f1a21d..e6d1a686114 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -593,6 +593,16 @@ static void test_clip(void) ok(dpi_x == 192.0f, "Got unexpected dpi_x %.8e.\n", dpi_x); ok(dpi_y == 192.0f, "Got unexpected dpi_y %.8e.\n", dpi_y); + ID2D1RenderTarget_SetDpi(rt, -10.0f, 96.0f); + ID2D1RenderTarget_GetDpi(rt, &dpi_x, &dpi_y); + ok(dpi_x == 192.0f, "Got unexpected dpi_x %.8e.\n", dpi_x); + ok(dpi_y == 192.0f, "Got unexpected dpi_y %.8e.\n", dpi_y); + + ID2D1RenderTarget_SetDpi(rt, 96.0f, -10.0f); + ID2D1RenderTarget_GetDpi(rt, &dpi_x, &dpi_y); + ok(dpi_x == 192.0f, "Got unexpected dpi_x %.8e.\n", dpi_x); + ok(dpi_y == 192.0f, "Got unexpected dpi_y %.8e.\n", dpi_y); + ID2D1RenderTarget_SetDpi(rt, 96.0f, 0.0f); ID2D1RenderTarget_GetDpi(rt, &dpi_x, &dpi_y); ok(dpi_x == 192.0f, "Got unexpected dpi_x %.8e.\n", dpi_x);