Index: trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c =================================================================== --- trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 22839) +++ trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 22840) @@ -1366,8 +1366,10 @@ static GdkGC *xor_gc; static GdkColor cross_color; - if (gport->view.crosshair_x < 0 || !ghidgui->topwin.active || !gport->view.has_entered) + if (gport->view.crosshair_x < 0 || !ghidgui->topwin.active || !gport->view.has_entered) { + x_prev = y_prev = -1; /* if leaving the drawing area, invalidate last known coord to make sure we redraw on reenter, even on the same coords */ return; + } if (!xor_gc) { xor_gc = gdk_gc_new(window); Index: trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c =================================================================== --- trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c (revision 22839) +++ trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c (revision 22840) @@ -1356,8 +1356,10 @@ //static GdkColor cross_color; cairo_t *cr; - if (gport->view.crosshair_x < 0 || !ghidgui->topwin.active || !gport->view.has_entered) + if (gport->view.crosshair_x < 0 || !ghidgui->topwin.active || !gport->view.has_entered) { + x_prev = y_prev = -1; /* if leaving the drawing area, invalidate last known coord to make sure we redraw on reenter, even on the same coords */ return; + } TODO("gtk3: when CrossColor changed from config") map_color_string(conf_core.appearance.color.cross.str, &priv->crosshair_color);