diff --git a/src/Fl_Copy_Surface.cxx b/src/Fl_Copy_Surface.cxx index d5a272bd3..5321d7d33 100644 --- a/src/Fl_Copy_Surface.cxx +++ b/src/Fl_Copy_Surface.cxx @@ -88,10 +88,10 @@ Fl_Copy_Surface::Fl_Copy_Surface(int w, int h) : Fl_Surface_Device(NULL) int vmm = GetDeviceCaps(hdc, VERTSIZE); int vdots = GetDeviceCaps(hdc, VERTRES); ReleaseDC(NULL, hdc); - float factorw = (100. * hmm) / hdots; - float factorh = (100. * vmm) / vdots; + float factorw = (100.f * hmm) / hdots; + float factorh = (100.f * vmm) / vdots; - RECT rect; rect.left = 0; rect.top = 0; rect.right = w * factorw; rect.bottom = h * factorh; + RECT rect; rect.left = 0; rect.top = 0; rect.right = (LONG)(w * factorw); rect.bottom = (LONG)(h * factorh); gc = CreateEnhMetaFile (NULL, NULL, &rect, NULL); if (gc != NULL) { SetTextAlign(gc, TA_BASELINE|TA_LEFT); diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx index 02d01f91a..4a3b837ea 100644 --- a/src/Fl_win32.cxx +++ b/src/Fl_win32.cxx @@ -787,9 +787,9 @@ void Fl::paste(Fl_Widget &receiver, int clipboard, const char *type) { int vmm = GetDeviceCaps(hdc, VERTSIZE); int vdots = GetDeviceCaps(hdc, VERTRES); ReleaseDC(NULL, hdc); - float factorw = (100. * hmm) / hdots; - float factorh = (100. * vmm) / vdots + 0.5; - width /= factorw; height /= factorh; // convert to screen pixel unit + float factorw = (100.f * hmm) / hdots; + float factorh = (100.f * vmm) / vdots + 0.5f; + width = (int)(width/factorw); height = (int)(height/factorh); // convert to screen pixel unit RECT rect = {0, 0, width, height}; Fl_Offscreen off = fl_create_offscreen(width, height); fl_begin_offscreen(off);