--- ../xorg-server-1.12.1/dix/getevents.c 2012-03-31 09:45:56.000000000 +0700 +++ ./getevents.c 2012-04-26 16:26:33.359648980 +0700 @@ -1435,7 +1435,17 @@ if ((incr > 0 && delta < 0) || (incr < 0 && delta > 0)) b--; /* we're scrolling up or left → button 4 or 6 */ - while (fabs(delta) >= fabs(incr)) { + int bug = 0; + + if (fabs(incr) > 0) + { + if ((fabs(delta) / fabs(incr)) > 100.0) + bug = 1; + } + else + bug = 1; + + while ((fabs(delta) >= fabs(incr)) && (bug == 0)) { int nev_tmp; if (delta > 0)