Index: app/display/gimpdisplayshell-callbacks.c
===================================================================
--- app/display/gimpdisplayshell-callbacks.c	(revision 24661)
+++ app/display/gimpdisplayshell-callbacks.c	(working copy)
@@ -81,8 +81,8 @@
 
 
 #define DEFAULT_EVENT_SMOOTHING  0.7
+#define DEFAULT_EVENT_FILTER  0.5
 
-
 /*  local function prototypes  */
 
 static void       gimp_display_shell_vscrollbar_update (GtkAdjustment    *adjustment,
@@ -1248,6 +1248,7 @@
                         if (gimp_display_shell_eval_event (shell,
                                                            &image_coords,
                                                            DEFAULT_EVENT_SMOOTHING,
+                                                           DEFAULT_EVENT_FILTER,
                                                            history_events[i]->time))
                           {
                             tool_manager_motion_active (gimp,
@@ -1269,6 +1270,7 @@
                     if (gimp_display_shell_eval_event (shell,
                                                        &image_coords,
                                                        DEFAULT_EVENT_SMOOTHING,
+                                                       DEFAULT_EVENT_FILTER,
                                                        time))
                       {
                         tool_manager_motion_active (gimp,
@@ -1289,7 +1291,11 @@
             /* Early removal of useless events saves CPU time.
              * Smoothing is 0.0 here for coasting.
              */
-            if (gimp_display_shell_eval_event (shell, &image_coords, 0.0, time))
+            if (gimp_display_shell_eval_event (shell,
+                                               &image_coords, 
+                                               0.0, 
+                                               DEFAULT_EVENT_FILTER,
+                                               time))
               {
                 tool_manager_oper_update_active (gimp,
                                                  &image_coords, state,
Index: app/display/gimpdisplayshell-coords.c
===================================================================
--- app/display/gimpdisplayshell-coords.c	(revision 24661)
+++ app/display/gimpdisplayshell-coords.c	(working copy)
@@ -210,6 +210,7 @@
 gimp_display_shell_eval_event (GimpDisplayShell *shell,
                                GimpCoords       *coords,
 			       gdouble           inertia_factor,
+                               gdouble           filter_treshhold,
 			       guint32           time)
 {
   const gdouble  smooth_factor = 0.3;
@@ -233,7 +234,7 @@
       /* Events with distances less than 1 in either motion direction
        * are not worth handling.
        */
-      if (fabs (dx) < 1.0 && fabs (dy) < 1.0)
+      if (fabs (dx) < filter_treshhold && fabs (dy) < filter_treshhold)
         return FALSE;
 
       coords->delta_time = thistime - shell->last_disp_motion_time;
@@ -260,7 +261,7 @@
           coords->velocity = MIN (coords->velocity, 1.0);
         }
 
-      if (inertia_factor > 0)
+      if ( (inertia_factor > 0) && (coords->distance > 0) )
         {
           /* Apply smoothing to X and Y. */
 
Index: app/display/gimpdisplayshell-coords.h
===================================================================
--- app/display/gimpdisplayshell-coords.h	(revision 24661)
+++ app/display/gimpdisplayshell-coords.h	(working copy)
@@ -41,6 +41,7 @@
 gboolean gimp_display_shell_eval_event        (GimpDisplayShell *shell,
                                                GimpCoords       *coords,
                                                gdouble           inertia_factor,
+                                               gdouble           filter_threshhold,
                                                guint32           time);
 
 
