Index: app/tools/gimppainttool.c
===================================================================
--- app/tools/gimppainttool.c	(revision 25288)
+++ app/tools/gimppainttool.c	(working copy)
@@ -132,7 +132,10 @@
   paint_tool->status      = _("Click to paint");
   paint_tool->status_line = _("Click to draw the line");
   paint_tool->status_ctrl = _("%s to pick a color");
-
+  
+  /*Paint tools benefit most from strong smooth on coordinates*/
+  tool->max_coord_smooth  = 0.98;
+  
   paint_tool->core        = NULL;
 }
 
Index: app/tools/gimptool.c
===================================================================
--- app/tools/gimptool.c	(revision 25288)
+++ app/tools/gimptool.c	(working copy)
@@ -158,6 +158,7 @@
   tool->modifier_state        = 0;
   tool->active_modifier_state = 0;
   tool->button_press_state    = 0;
+  tool->max_coord_smooth      = 0.0;
 }
 
 static void
Index: app/tools/gimptool.h
===================================================================
--- app/tools/gimptool.h	(revision 25288)
+++ app/tools/gimptool.h	(working copy)
@@ -47,6 +47,8 @@
 
   GimpDisplay     *display;     /*  pointer to currently active display    */
   GimpDrawable    *drawable;    /*  pointer to the tool's current drawable */
+  
+  gdouble         max_coord_smooth;
 
   /*  private state of gimp_tool_set_focus_display() and
    *  gimp_tool_set_[active_]modifier_state()
Index: app/display/gimpdisplayshell-callbacks.c
===================================================================
--- app/display/gimpdisplayshell-callbacks.c	(revision 25288)
+++ app/display/gimpdisplayshell-callbacks.c	(working copy)
@@ -77,11 +77,6 @@
 #include "gimp-log.h"
 #include "gimp-intl.h"
 
-
-#define DEFAULT_EVENT_SMOOTHING  0.98
-#define DEFAULT_EVENT_FILTER     0.50
-
-
 /*  local function prototypes  */
 
 static void       gimp_display_shell_vscrollbar_update       (GtkAdjustment    *adjustment,
@@ -1142,8 +1137,7 @@
                          */
                         if (gimp_display_shell_eval_event (shell,
                                                            &image_coords,
-                                                           DEFAULT_EVENT_SMOOTHING,
-                                                           DEFAULT_EVENT_FILTER,
+                                                           active_tool->max_coord_smooth,
                                                            history_events[i]->time))
                           {
                             tool_manager_motion_active (gimp,
@@ -1164,8 +1158,7 @@
                      */
                     if (gimp_display_shell_eval_event (shell,
                                                        &image_coords,
-                                                       DEFAULT_EVENT_SMOOTHING,
-                                                       DEFAULT_EVENT_FILTER,
+                                                       active_tool->max_coord_smooth,
                                                        time))
                       {
                         tool_manager_motion_active (gimp,
@@ -1189,7 +1182,6 @@
             if (gimp_display_shell_eval_event (shell,
                                                &image_coords,
                                                0.0,
-                                               DEFAULT_EVENT_FILTER,
                                                time))
               {
                 tool_manager_oper_update_active (gimp,
Index: app/display/gimpdisplayshell-coords.c
===================================================================
--- app/display/gimpdisplayshell-coords.c	(revision 25288)
+++ app/display/gimpdisplayshell-coords.c	(working copy)
@@ -209,27 +209,25 @@
 gimp_display_shell_eval_event (GimpDisplayShell *shell,
                                GimpCoords       *coords,
 			       gdouble           inertia_factor,
-                               gdouble           filter_treshhold,
 			       guint32           time)
 {
   const gdouble  smooth_factor = 0.3;
   guint32        thistime      = time;
   gdouble        dist;
-  gdouble        filter;
+  /* Ensuring that events are filtered below screen resolution */
+  gdouble        filter        = (MIN(shell->scale_x, shell->scale_y))/2;
   gdouble        inertia;
 
-  /* Event filtering & smoothing causes problems with cursor tracking
+  /* Smoothing causes problems with cursor tracking
    * when zoomed above screen resolution so we need to supress it.
    */
   if (shell->scale_x > 1.0 || shell->scale_y > 1.0)
     {
-     filter  = filter_treshhold / (MAX (shell->scale_x, shell->scale_y));
      inertia = 0.0;
     }
   else
     {
-      filter  = filter_treshhold;
-      inertia = inertia_factor;
+     inertia = inertia_factor;
     }
 
   if (shell->last_disp_motion_time == 0)
@@ -330,6 +328,8 @@
                                    SQR (coords->delta_y));
         }
 
+
+
 #ifdef VERBOSE
       g_printerr ("DIST: %f, DT:%f, Vel:%f, Press:%f,smooth_dd:%f, sf %f\n",
                   coords->distance,
Index: app/display/gimpdisplayshell-coords.h
===================================================================
--- app/display/gimpdisplayshell-coords.h	(revision 25288)
+++ app/display/gimpdisplayshell-coords.h	(working copy)
@@ -41,7 +41,6 @@
 gboolean gimp_display_shell_eval_event        (GimpDisplayShell *shell,
                                                GimpCoords       *coords,
                                                gdouble           inertia_factor,
-                                               gdouble           filter_threshhold,
                                                guint32           time);
