diff --git a/src/ddsurface.c b/src/ddsurface.c
index 1ad8429..a3725fd 100644
--- a/src/ddsurface.c
+++ b/src/ddsurface.c
@@ -929,7 +929,11 @@ HRESULT dds_SetPalette(IDirectDrawSurfaceImpl *This, LPDIRECTDRAWPALETTE lpDDPal
         IDirectDrawPalette_Release(This->palette);
     }
 
-    This->palette = (IDirectDrawPaletteImpl *)lpDDPalette;
+    EnterCriticalSection(&g_ddraw->cs);
+
+    This->palette = (IDirectDrawPaletteImpl*)lpDDPalette;
+
+    LeaveCriticalSection(&g_ddraw->cs);
 
     return DD_OK;
 }