diff --git a/src/msw/dc.cpp b/src/msw/dc.cpp index d8cc34d86e..0dc13d5a1f 100644 --- a/src/msw/dc.cpp +++ b/src/msw/dc.cpp @@ -2065,10 +2065,19 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, { StretchBltModeChanger changeMode(GetHdc(), COLORONCOLOR); + // Figure out what co-ordinate system we're supposed to specify + // ysrc in. + const LONG hDIB = ds.dsBmih.biHeight; + if ( hDIB > 0 ) + { + // reflect ysrc + ysrc = hDIB - (ysrc + height); + } + if ( ::StretchDIBits(GetHdc(), xdest, ydest, width, height, - 0, 0, + xsrc, ysrc, width, height, ds.dsBm.bmBits, (LPBITMAPINFO)&ds.dsBmih,