diff --git a/dlls/gdi32/bitblt.c b/dlls/gdi32/bitblt.c
index 4c80f1af6110ebce5d2f1da6c44869ba2040f2ba..7298be9e6e0746053b8ec43c3bd09fd39587cd8d 100644
--- a/dlls/gdi32/bitblt.c
+++ b/dlls/gdi32/bitblt.c
@@ -788,7 +788,7 @@ BOOL WINAPI MaskBlt(HDC hdcDest, INT nXDest, INT nYDest,
     hbrDst = NtGdiSelectBrush(hdcDest, GetStockObject(NULL_BRUSH));
 
     /* make bitmap */
-    hDC1 = CreateCompatibleDC(hdcDest);
+    hDC1 = NtGdiCreateCompatibleDC( hdcDest );
     hBitmap1 = CreateCompatibleBitmap(hdcDest, nWidth, nHeight);
     hOldBitmap1 = NtGdiSelectBitmap(hDC1, hBitmap1);
 
@@ -799,7 +799,7 @@ BOOL WINAPI MaskBlt(HDC hdcDest, INT nXDest, INT nYDest,
     NtGdiSelectBrush(hDC1, hbrTmp);
 
     /* make bitmap */
-    hDC2 = CreateCompatibleDC(hdcDest);
+    hDC2 = NtGdiCreateCompatibleDC( hdcDest );
     hBitmap2 = CreateCompatibleBitmap(hdcDest, nWidth, nHeight);
     hOldBitmap2 = NtGdiSelectBitmap(hDC2, hBitmap2);
 
@@ -864,7 +864,7 @@ BOOL WINAPI GdiTransparentBlt( HDC hdcDest, int xDest, int yDest, int widthDest,
     oldStretchMode = GetStretchBltMode(hdcSrc);
     if(oldStretchMode == BLACKONWHITE || oldStretchMode == WHITEONBLACK)
         SetStretchBltMode(hdcSrc, COLORONCOLOR);
-    hdcWork = CreateCompatibleDC(hdcDest);
+    hdcWork = NtGdiCreateCompatibleDC( hdcDest );
     if ((GetObjectType( hdcDest ) != OBJ_MEMDC ||
          GetObjectW( GetCurrentObject( hdcDest, OBJ_BITMAP ), sizeof(dib), &dib ) == sizeof(BITMAP)) &&
         GetDeviceCaps( hdcDest, BITSPIXEL ) == 32)
@@ -888,7 +888,7 @@ BOOL WINAPI GdiTransparentBlt( HDC hdcDest, int xDest, int yDest, int widthDest,
     SetBkColor(hdcWork, crTransparent);
 
     /* Create mask */
-    hdcMask = CreateCompatibleDC(hdcDest);
+    hdcMask = NtGdiCreateCompatibleDC( hdcDest );
     bmpMask = CreateCompatibleBitmap(hdcMask, widthDest, heightDest);
     oldMask = NtGdiSelectBitmap(hdcMask, bmpMask);
     if(!BitBlt(hdcMask, 0, 0, widthDest, heightDest, hdcWork, 0, 0, SRCCOPY)) {
diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c
index 1d89d48d9c63762481db8a9f01bf01ca10e41945..a51fac027d70fc52d167ad6d0927ca1904f8a536 100644
--- a/dlls/gdi32/dc.c
+++ b/dlls/gdi32/dc.c
@@ -684,9 +684,9 @@ HDC WINAPI CreateDCW( LPCWSTR driver, LPCWSTR device, LPCWSTR output,
 
 
 /***********************************************************************
- *           CreateCompatibleDC   (GDI32.@)
+ *           NtGdiCreateCompatibleDC   (win32u.@)
  */
-HDC WINAPI CreateCompatibleDC( HDC hdc )
+HDC WINAPI NtGdiCreateCompatibleDC( HDC hdc )
 {
     DC *dc, *origDC;
     HDC ret;
diff --git a/dlls/gdi32/dib.c b/dlls/gdi32/dib.c
index 432f33151d9f20579d0c48c4f3ec0079a32226f6..cf822440490bf345ee51f32b8d19e2fb973cfebd 100644
--- a/dlls/gdi32/dib.c
+++ b/dlls/gdi32/dib.c
@@ -1636,7 +1636,8 @@ NTSTATUS WINAPI D3DKMTCreateDCFromMemory( D3DKMT_CREATEDCFROMMEMORY *desc )
         !desc->Pitch || desc->Pitch < get_dib_stride( desc->Width, format->bit_count ) ||
         !desc->Height || desc->Height > UINT_MAX / desc->Pitch) return STATUS_INVALID_PARAMETER;
 
-    if (!desc->hDeviceDc || !(dc = CreateCompatibleDC( desc->hDeviceDc ))) return STATUS_INVALID_PARAMETER;
+    if (!desc->hDeviceDc || !(dc = NtGdiCreateCompatibleDC( desc->hDeviceDc )))
+        return STATUS_INVALID_PARAMETER;
 
     if (!(bmp = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*bmp) ))) goto error;
 
diff --git a/dlls/gdi32/enhmetafile.c b/dlls/gdi32/enhmetafile.c
index 1053a2ea1040a4ebaf2a48b23ebca9fa6764a406..99f692adb98264d39bee3aac9d825402852a9044 100644
--- a/dlls/gdi32/enhmetafile.c
+++ b/dlls/gdi32/enhmetafile.c
@@ -1916,7 +1916,7 @@ BOOL WINAPI PlayEnhMetaFileRecord(
             PatBlt(hdc, pBitBlt->xDest, pBitBlt->yDest, pBitBlt->cxDest, pBitBlt->cyDest,
                    pBitBlt->dwRop);
         } else { /* BitBlt */
-            HDC hdcSrc = CreateCompatibleDC(hdc);
+            HDC hdcSrc = NtGdiCreateCompatibleDC( hdc );
             HBRUSH hBrush, hBrushOld;
             HBITMAP hBmp = 0, hBmpOld = 0;
             const BITMAPINFO *pbi = (const BITMAPINFO *)((const BYTE *)mr + pBitBlt->offBmiSrc);
@@ -1959,7 +1959,7 @@ BOOL WINAPI PlayEnhMetaFileRecord(
             PatBlt(hdc, pStretchBlt->xDest, pStretchBlt->yDest, pStretchBlt->cxDest, pStretchBlt->cyDest,
                    pStretchBlt->dwRop);
         } else { /* StretchBlt */
-            HDC hdcSrc = CreateCompatibleDC(hdc);
+            HDC hdcSrc = NtGdiCreateCompatibleDC( hdc );
             HBRUSH hBrush, hBrushOld;
             HBITMAP hBmp = 0, hBmpOld = 0;
             const BITMAPINFO *pbi = (const BITMAPINFO *)((const BYTE *)mr + pStretchBlt->offBmiSrc);
@@ -2002,7 +2002,7 @@ BOOL WINAPI PlayEnhMetaFileRecord(
         if(pAlphaBlend->offBmiSrc == 0) {
             FIXME("EMR_ALPHABLEND: offBmiSrc == 0\n");
         } else {
-            HDC hdcSrc = CreateCompatibleDC(hdc);
+            HDC hdcSrc = NtGdiCreateCompatibleDC( hdc );
             HBITMAP hBmp = 0, hBmpOld = 0;
             const BITMAPINFO *pbi = (const BITMAPINFO *)((const BYTE *)mr + pAlphaBlend->offBmiSrc);
             void *bits;
@@ -2028,7 +2028,7 @@ BOOL WINAPI PlayEnhMetaFileRecord(
     case EMR_MASKBLT:
     {
 	const EMRMASKBLT *pMaskBlt = (const EMRMASKBLT *)mr;
-	HDC hdcSrc = CreateCompatibleDC(hdc);
+	HDC hdcSrc = NtGdiCreateCompatibleDC( hdc );
 	HBRUSH hBrush, hBrushOld;
 	HBITMAP hBmp, hBmpOld, hBmpMask;
 	const BITMAPINFO *pbi;
@@ -2076,7 +2076,7 @@ BOOL WINAPI PlayEnhMetaFileRecord(
     case EMR_PLGBLT:
     {
 	const EMRPLGBLT *pPlgBlt = (const EMRPLGBLT *)mr;
-	HDC hdcSrc = CreateCompatibleDC(hdc);
+	HDC hdcSrc = NtGdiCreateCompatibleDC( hdc );
 	HBRUSH hBrush, hBrushOld;
 	HBITMAP hBmp, hBmpOld, hBmpMask;
 	const BITMAPINFO *pbi;
diff --git a/dlls/gdi32/gdi32.spec b/dlls/gdi32/gdi32.spec
index aef85c88d7d1edc8dcf5af968506050f64d5a47b..6b1d0952bf2e7146d9fa521f2a730b8990c2b943 100644
--- a/dlls/gdi32/gdi32.spec
+++ b/dlls/gdi32/gdi32.spec
@@ -44,7 +44,7 @@
 @ stdcall CreateColorSpaceA(ptr)
 @ stdcall CreateColorSpaceW(ptr)
 @ stdcall CreateCompatibleBitmap(long long long)
-@ stdcall CreateCompatibleDC(long)
+@ stdcall CreateCompatibleDC(long) NtGdiCreateCompatibleDC
 @ stdcall CreateDCA(str str str ptr)
 @ stdcall CreateDCW(wstr wstr wstr ptr)
 @ stdcall CreateDIBPatternBrush(long long)
diff --git a/dlls/gdi32/metafile.c b/dlls/gdi32/metafile.c
index 1b31e40bc149a64ebfe5bfcab73e47c593239ac7..b0428960b501580d850a10d0a493437f03c45097 100644
--- a/dlls/gdi32/metafile.c
+++ b/dlls/gdi32/metafile.c
@@ -841,7 +841,7 @@ BOOL WINAPI PlayMetaFileRecord( HDC hdc,  HANDLETABLE *ht, METARECORD *mr, UINT
 
     case META_STRETCHBLT:
       {
-        HDC hdcSrc = CreateCompatibleDC(hdc);
+        HDC hdcSrc = NtGdiCreateCompatibleDC( hdc );
         HBITMAP hbitmap = CreateBitmap(mr->rdParm[10], /*Width */
                                        mr->rdParm[11], /*Height*/
                                        mr->rdParm[13], /*Planes*/
@@ -859,7 +859,7 @@ BOOL WINAPI PlayMetaFileRecord( HDC hdc,  HANDLETABLE *ht, METARECORD *mr, UINT
 
     case META_BITBLT:
       {
-        HDC hdcSrc = CreateCompatibleDC(hdc);
+        HDC hdcSrc = NtGdiCreateCompatibleDC( hdc );
         HBITMAP hbitmap = CreateBitmap(mr->rdParm[7]/*Width */,
                                         mr->rdParm[8]/*Height*/,
                                         mr->rdParm[10]/*Planes*/,
diff --git a/include/ntgdi.h b/include/ntgdi.h
index 22d1f9da187fbeda2df8b23a2dfaea28a155eb11..94b180041c89bb107c5b4c85d96accdfd2954f27 100644
--- a/include/ntgdi.h
+++ b/include/ntgdi.h
@@ -139,6 +139,7 @@ BOOL     WINAPI NtGdiEndPath( HDC hdc );
 HANDLE   WINAPI NtGdiCreateClientObj( ULONG type );
 HFONT    WINAPI NtGdiHfontCreate( const ENUMLOGFONTEXDVW *enumex, ULONG unk2, ULONG unk3,
                                   ULONG unk4, void *data );
+HDC      WINAPI NtGdiCreateCompatibleDC( HDC hdc );
 HBRUSH   WINAPI NtGdiCreateDIBBrush( const void* data, UINT coloruse );
 HRGN     WINAPI NtGdiCreateEllipticRgn( INT left, INT top, INT right, INT bottom );
 HBRUSH   WINAPI NtGdiCreatePatternBrushInternal( HBITMAP hbitmap, BOOL pen );