diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx index e0d5c9f4b..fd846d980 100644 --- a/src/Fl_win32.cxx +++ b/src/Fl_win32.cxx @@ -1265,8 +1265,7 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar ValidateRgn(hWnd, R2); } - // convert R2 in drawing units to i->region in FLTK units - i->region = Fl_GDI_Graphics_Driver::scale_region(R2, 1 / scale, NULL); + if (scale != 1) DeleteObject(R2); window->clear_damage((uchar)(window->damage() | FL_DAMAGE_EXPOSE)); // These next two statements should not be here, so that all update diff --git a/src/drivers/GDI/Fl_GDI_Graphics_Driver.cxx b/src/drivers/GDI/Fl_GDI_Graphics_Driver.cxx index 1938fc5d5..31e54c37f 100644 --- a/src/drivers/GDI/Fl_GDI_Graphics_Driver.cxx +++ b/src/drivers/GDI/Fl_GDI_Graphics_Driver.cxx @@ -246,14 +246,12 @@ void Fl_GDI_Graphics_Driver::scale(float f) { /* Rescale region r with factor f and returns the scaled region. Region r is returned unchanged if r is null or f is 1. - The input region is deleted if dr is null. */ HRGN Fl_GDI_Graphics_Driver::scale_region(HRGN r, float f, Fl_GDI_Graphics_Driver *dr) { if (r && f != 1) { DWORD size = GetRegionData(r, 0, NULL); RGNDATA *pdata = (RGNDATA*)malloc(size); GetRegionData(r, size, pdata); - if (!dr) DeleteObject(r); POINT pt = {0, 0}; if (dr && dr->depth >= 1) { // account for translation GetWindowOrgEx((HDC)dr->gc(), &pt);