diff --git a/graphics/x11drv/palette.c b/graphics/x11drv/palette.c
index bf363d2..b749b52 100644
--- a/graphics/x11drv/palette.c
+++ b/graphics/x11drv/palette.c
@@ -669,7 +669,7 @@
 int X11DRV_PALETTE_ToPhysical( DC *dc, COLORREF color )
 {
     WORD 		 index = 0;
-    HPALETTE16		 hPal = (dc)? dc->w.hPalette: STOCK_DEFAULT_PALETTE;
+    HPALETTE16		 hPal = (dc)? dc->w.hPalette: GetStockObject(DEFAULT_PALETTE);
     unsigned char	 spec_type = color >> 24;
     PALETTEOBJ* 	 palPtr = (PALETTEOBJ *) GDI_GetObjPtr( hPal, PALETTE_MAGIC );
 
diff --git a/objects/dc.c b/objects/dc.c
index 8c7e756..ac6b698 100644
--- a/objects/dc.c
+++ b/objects/dc.c
@@ -34,12 +34,12 @@
     win_dc_info->hClipRgn            = 0;
     win_dc_info->hVisRgn             = 0;
     win_dc_info->hGCClipRgn          = 0;
-    win_dc_info->hPen                = STOCK_BLACK_PEN;
-    win_dc_info->hBrush              = STOCK_WHITE_BRUSH;
-    win_dc_info->hFont               = STOCK_SYSTEM_FONT;
+    win_dc_info->hPen                = GetStockObject( BLACK_PEN );
+    win_dc_info->hBrush              = GetStockObject( WHITE_BRUSH );
+    win_dc_info->hFont               = GetStockObject( SYSTEM_FONT );
     win_dc_info->hBitmap             = 0;
     win_dc_info->hDevice             = 0;
-    win_dc_info->hPalette            = STOCK_DEFAULT_PALETTE;
+    win_dc_info->hPalette            = GetStockObject( DEFAULT_PALETTE );
     win_dc_info->ROPmode             = R2_COPYPEN;
     win_dc_info->polyFillMode        = ALTERNATE;
     win_dc_info->stretchBltMode      = BLACKONWHITE;
@@ -739,9 +739,9 @@
     
     if (!(dc->w.flags & DC_SAVED))
     {
-	SelectObject( hdc, STOCK_BLACK_PEN );
-	SelectObject( hdc, STOCK_WHITE_BRUSH );
-	SelectObject( hdc, STOCK_SYSTEM_FONT );
+	SelectObject( hdc, GetStockObject(BLACK_PEN) );
+	SelectObject( hdc, GetStockObject(WHITE_BRUSH) );
+	SelectObject( hdc, GetStockObject(SYSTEM_FONT) );
         if (dc->funcs->pDeleteDC) dc->funcs->pDeleteDC(dc);
     }
 
diff --git a/objects/palette.c b/objects/palette.c
index 6bc21d1..a6c5fce 100644
--- a/objects/palette.c
+++ b/objects/palette.c
@@ -385,7 +385,7 @@
 {
     TRACE("%04x (%i - %i)\n", hPal, StartIndex,StartIndex+NumEntries);
 
-    if( hPal != STOCK_DEFAULT_PALETTE ) 
+    if( hPal != GetStockObject(DEFAULT_PALETTE) )
     {
         PALETTEOBJ* palPtr = (PALETTEOBJ *)GDI_GetObjPtr(hPal, PALETTE_MAGIC);
         if (!palPtr) return FALSE;
@@ -578,7 +578,7 @@
 
     if ( (dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC )) )
     {
-        HPALETTE hpal = (dc->w.hPalette)? dc->w.hPalette : STOCK_DEFAULT_PALETTE;
+        HPALETTE hpal = (dc->w.hPalette)? dc->w.hPalette : GetStockObject( DEFAULT_PALETTE );
         palObj = GDI_GetObjPtr( hpal, PALETTE_MAGIC );
         if (!palObj) {
             GDI_ReleaseObj( hdc );
@@ -672,7 +672,7 @@
     
     if(dc->w.hPalette != hLastRealizedPalette )
     {
-	if( dc->w.hPalette == STOCK_DEFAULT_PALETTE ) {
+	if( dc->w.hPalette == GetStockObject( DEFAULT_PALETTE )) {
             realized = RealizeDefaultPalette16( hdc );
 	    GDI_ReleaseObj( hdc );
 	    return (UINT16)realized;
@@ -690,7 +690,7 @@
         realized = PALETTE_Driver->
 	  pSetMapping(palPtr,0,palPtr->logpalette.palNumEntries,
 		      (dc->w.hPalette != hPrimaryPalette) ||
-		      (dc->w.hPalette == STOCK_DEFAULT_PALETTE));
+		      (dc->w.hPalette == GetStockObject( DEFAULT_PALETTE )));
 	hLastRealizedPalette = dc->w.hPalette;
 	GDI_ReleaseObj( dc->w.hPalette );
     }
@@ -718,12 +718,12 @@
 
     if (!(dc->w.flags & DC_MEMORY))
     {
-        palPtr = (PALETTEOBJ*)GDI_GetObjPtr(STOCK_DEFAULT_PALETTE, PALETTE_MAGIC );
+        palPtr = (PALETTEOBJ*)GDI_GetObjPtr( GetStockObject(DEFAULT_PALETTE), PALETTE_MAGIC );
         if (palPtr)
         {
             /* lookup is needed to account for SetSystemPaletteUse() stuff */
             ret = PALETTE_Driver->pUpdateMapping(palPtr);
-            GDI_ReleaseObj( STOCK_DEFAULT_PALETTE );
+            GDI_ReleaseObj( GetStockObject(DEFAULT_PALETTE) );
         }
     }
     GDI_ReleaseObj( hdc );
diff --git a/windows/painting.c b/windows/painting.c
index 1fbaeb7..dbe7dbd 100644
--- a/windows/painting.c
+++ b/windows/painting.c
@@ -1683,7 +1683,7 @@
 {
     WORD wBkgPalette = 1;
 
-    if (!bForceBackground && (hPal != STOCK_DEFAULT_PALETTE))
+    if (!bForceBackground && (hPal != GetStockObject(DEFAULT_PALETTE)))
     {
         HWND hwnd = WindowFromDC( hDC );
         if (hwnd)
