diff --git a/src/config.c b/src/config.c
index 53e150d..760efb6 100644
--- a/src/config.c
+++ b/src/config.c
@@ -1001,7 +1001,7 @@ static void cfg_create_ini()
             "nonexclusive=true\n"
             "maxgameticks=60\n"
             "adjmouse=true\n"
-            "fixchilds=1\n"
+            "fixchilds=2\n"
             "maintas=false\n"
             "boxing=false\n"
             "\n"
diff --git a/src/winapi_hooks.c b/src/winapi_hooks.c
index cb13502..60c9e40 100644
--- a/src/winapi_hooks.c
+++ b/src/winapi_hooks.c
@@ -559,18 +559,37 @@ BOOL WINAPI fake_StretchBlt(
     int hSrc,
     DWORD rop)
 {
-    if (g_ddraw && g_ddraw->primary && WindowFromDC(hdcDest) == g_ddraw->hwnd)
+    if (g_ddraw && WindowFromDC(hdcDest) == g_ddraw->hwnd)
     {
-        HDC primary_dc;
-        dds_GetDC(g_ddraw->primary, &primary_dc);
-
-        if (primary_dc)
+        if (g_ddraw->primary)
         {
-            BOOL result = real_StretchBlt(primary_dc, xDest, yDest, wDest, hDest, hdcSrc, xSrc, ySrc, wSrc, hSrc, rop);
+            HDC primary_dc;
+            dds_GetDC(g_ddraw->primary, &primary_dc);
 
-            dds_ReleaseDC(g_ddraw->primary, primary_dc);
+            if (primary_dc)
+            {
+                BOOL result = 
+                    real_StretchBlt(primary_dc, xDest, yDest, wDest, hDest, hdcSrc, xSrc, ySrc, wSrc, hSrc, rop);
 
-            return result;
+                dds_ReleaseDC(g_ddraw->primary, primary_dc);
+
+                return result;
+            }
+        }
+        else if (g_ddraw->width > 0)
+        {
+            return real_StretchBlt(
+                hdcDest, 
+                xDest + g_ddraw->render.viewport.x,
+                yDest + g_ddraw->render.viewport.y,
+                wDest * g_ddraw->render.scale_w,
+                hDest * g_ddraw->render.scale_h,
+                hdcSrc, 
+                xSrc, 
+                ySrc, 
+                wSrc, 
+                hSrc, 
+                rop);
         }
     }