rem: DPtoLP(hdc, &ptSize, 1);
add: DPtoLP(scratchDC, &ptSize, 1);
context: DrawWindowsSystemBitmap(display, drawable, gc, rectPtr, bitmapID, alignFlags)    Display *display;			/* The display we are drawing into */    Drawable drawable;			/* The drawable we are working with */    GC gc;				/* The GC to draw with */    CONST RECT *rectPtr;		/* The rectangle to draw into */    int bitmapID;			/* The windows id of the system					 * bitmap to draw. */    int alignFlags;			/* How to align the bitmap inside the					 * rectangle. */{    TkWinDCState state;    HDC hdc = TkWinGetDrawableDC(display, drawable, &state);    HDC scratchDC;    HBITMAP bitmap;    BITMAP bm;    POINT ptSize;    POINT ptOrg;    int topOffset, leftOffset;        SetBkColor(hdc, gc->background);    SetTextColor(hdc, gc->foreground);    scratchDC = CreateCompatibleDC(hdc);    bitmap = LoadBitmap(NULL, MAKEINTRESOURCE(bitmapID));    SelectObject(scratchDC, bitmap);    SetMapMode(scratchDC, GetMapMode(hdc));    GetObject(bitmap, sizeof(BITMAP), &bm);    ptSize.x = bm.bmWidth;    ptSize.y = bm.bmHeight;    DPtoLP(hdc, &ptSize, 1);    ptOrg.y = ptOrg.x = 0;    DPtoLP(hdc, &ptOrg, 1);    if (alignFlags & ALIGN_BITMAP_TOP) {	topOffset = 0;    } else if (alignFlags & ALIGN_BITMAP_BOTTOM) {	topOffset = (rectPtr->bottom - rectPtr->top) - ptSize.y;    } else {	topOffset = (rectPtr->bottom - rectPtr->top) / 2 - (ptSize.y / 2);    }    if (alignFlags & ALIGN_BITMAP_LEFT) {	leftOffset = 0;    } else if (alignFlags & ALIGN_BITMAP_RIGHT) {	leftOffset = (rectPtr->right - rectPtr->left) - ptSize.x;    } else {	leftOffset = (rectPtr->right - rectPtr->left) / 2 - (ptSize.x / 2);    }        BitBlt(hdc, rectPtr->left + leftOffset, rectPtr->top + topOffset, ptSize.x,	    ptSize.y, scratchDC, ptOrg.x, ptOrg.y, SRCCOPY);    DeleteDC(scratchDC);    DeleteObject(bitmap);    TkWinReleaseDrawableDC(drawable, hdc, &state);}