diff -ur xorg-server-1.19.5.orig/dix/events.c xorg-server-1.19.5/dix/events.c --- xorg-server-1.19.5.orig/dix/events.c 2017-10-12 19:24:59.000000000 +0200 +++ xorg-server-1.19.5/dix/events.c 2018-01-27 02:01:06.564215905 +0100 @@ -863,6 +863,7 @@ qe->pScreen = pSprite->hot.pScreen; ev->root_x = pSprite->hot.x; ev->root_y = pSprite->hot.y; + ev->root_x_frac = ev->root_y_frac = 0.0; } } #ifdef PANORAMIX @@ -1183,6 +1184,7 @@ tailev->root_x = pSprite->hotPhys.x; tailev->root_y = pSprite->hotPhys.y; + tailev->root_x_frac = tailev->root_y_frac = 0.0; tailev->time = event->time; tail->months = currentTime.months; return; @@ -3055,6 +3057,7 @@ ev->root_x = pSprite->hot.x; ev->root_y = pSprite->hot.y; + ev->root_x_frac = ev->root_y_frac = 0.0; } newSpriteWin = XYToWindow(pSprite, pSprite->hot.x, pSprite->hot.y); diff -ur xorg-server-1.19.5.orig/dix/getevents.c xorg-server-1.19.5/dix/getevents.c --- xorg-server-1.19.5.orig/dix/getevents.c 2017-10-12 19:24:59.000000000 +0200 +++ xorg-server-1.19.5/dix/getevents.c 2018-01-27 02:01:09.708194648 +0100 @@ -1048,10 +1048,10 @@ static void event_set_root_coordinates(DeviceEvent *event, double x, double y) { - event->root_x = trunc(x); - event->root_y = trunc(y); - event->root_x_frac = x - trunc(x); - event->root_y_frac = y - trunc(y); + event->root_x = floor(x); + event->root_y = floor(y); + event->root_x_frac = x - floor(x); + event->root_y_frac = y - floor(y); } /** diff -ur xorg-server-1.19.5.orig/Xi/exevents.c xorg-server-1.19.5/Xi/exevents.c --- xorg-server-1.19.5.orig/Xi/exevents.c 2017-10-12 19:24:59.000000000 +0200 +++ xorg-server-1.19.5/Xi/exevents.c 2018-01-27 02:01:30.072056503 +0100 @@ -1726,6 +1726,7 @@ GetSpritePosition(device, &rootX, &rootY); event->root_x = rootX; event->root_y = rootY; + event->root_x_frac = event->root_y_frac = 0.0; NoticeEventTime((InternalEvent *) event, device); event->corestate = corestate; key = event->detail.key;