diff --git a/src/GroupSelector.cs b/src/GroupSelector.cs
index fbaf8c9..e86b774 100644
--- a/src/GroupSelector.cs
+++ b/src/GroupSelector.cs
@@ -588,16 +588,22 @@ namespace FSpot {
 			public virtual void UpdateDrag (double x, double y)
 			{
 				Rectangle bounds = Bounds ();
+				double drag_lower_limit = selector.BoxX(0);
+				double drag_upper_limit = selector.BoxX(selector.box_counts.Length) - bounds.Width;
+				double calX = selector.BoxX(Position) + (x - DragStart.X);
+
+				if ( calX >= drag_lower_limit && calX <= drag_upper_limit )
+				{
+					int scroll = selector.background.X - bounds.Left;
+					if (scroll > 0 && selector.Offset < 0) {
+						selector.Offset = Math.Min (selector.Offset + scroll, 0);
+						if (selector.Offset == 0)
+							return;
+					}
 
-				int scroll = selector.background.X - bounds.Left;
-				if (scroll > 0 && selector.Offset < 0) {
-					selector.Offset = Math.Min (selector.Offset + scroll, 0);
-					if (selector.Offset == 0)
-						return;
-				}
-
-				//System.Console.WriteLine ("scroll {0}, x {1}", scroll, x);
-				DragOffset = (int)x - DragStart.X;
+					//System.Console.WriteLine ("scroll {0}, x {1}", scroll, x);
+					DragOffset = (int)x - DragStart.X;
+				}				
 			}
 
 			public virtual void EndDrag (double x, double y)
