summaryrefslogtreecommitdiff
path: root/src/Fl_Screen_Driver.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Fl_Screen_Driver.cxx')
-rw-r--r--src/Fl_Screen_Driver.cxx5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/Fl_Screen_Driver.cxx b/src/Fl_Screen_Driver.cxx
index 971ce423e..85a60109c 100644
--- a/src/Fl_Screen_Driver.cxx
+++ b/src/Fl_Screen_Driver.cxx
@@ -196,6 +196,7 @@ Fl_RGB_Image *Fl_Screen_Driver::traverse_to_gl_subwindows(Fl_Group *g, int x, in
if (full_img) g->as_window()->make_current();
full_img = Fl::screen_driver()->read_win_rectangle(x, y, w, h);
}
+ float full_img_scale = (full_img && w > 0 ? float(full_img->data_w())/w : 1);
int n = g->children();
for (int i = 0; i < n; i++) {
Fl_Widget *c = g->child(i);
@@ -221,9 +222,7 @@ Fl_RGB_Image *Fl_Screen_Driver::traverse_to_gl_subwindows(Fl_Group *g, int x, in
} else {
top = full_img->h() - (origin_y - y + img->h());
}
- int nscreen = c->as_window()->driver()->screen_num();
- float s = Fl::screen_driver()->scale(nscreen);
- write_image_inside(full_img, img, (origin_x - x) * s, top * s);
+ write_image_inside(full_img, img, (origin_x - x) * full_img_scale, top * full_img_scale);
delete img;
}
}