All standard window controls should have CS_PARENTDC, but should still
clip to the control window.

diff --git a/controls/button.c b/controls/button.c
index 51bd46c..0a14594 100644
--- a/controls/button.c
+++ b/controls/button.c
@@ -921,6 +921,8 @@
 {
     BUTTONINFO *infoPtr = (BUTTONINFO *)wndPtr->wExtra;
     DRAWITEMSTRUCT dis;
+    HRGN clipRegion;
+    RECT clipRect;
 
     dis.CtlType    = ODT_BUTTON;
     dis.CtlID      = wndPtr->wIDmenu;
@@ -934,9 +936,21 @@
     dis.itemData   = 0;
     GetClientRect( wndPtr->hwndSelf, &dis.rcItem );
 
+    clipRegion = CreateRectRgnIndirect(&dis.rcItem);   
+    if (GetClipRgn(hDC, clipRegion) != 1)
+    {
+	DeleteObject(clipRegion);
+	clipRegion=(HRGN)NULL;
+    }
+    clipRect = dis.rcItem;
+    DPtoLP(hDC, (LPPOINT) &clipRect, 2);    
+    IntersectClipRect(hDC, clipRect.left,  clipRect.top, clipRect.right, clipRect.bottom);
+
     SetBkColor( hDC, GetSysColor( COLOR_BTNFACE ) );
 
     SendMessageA( GetParent(wndPtr->hwndSelf), WM_DRAWITEM,
                     wndPtr->wIDmenu, (LPARAM)&dis );
+
+    SelectClipRgn(hDC, clipRegion);		
 }