diff --git a/modules/base/pymod/stutil.py b/modules/base/pymod/stutil.py
index 2f64beaefa3731c5689c73c585cbc3edb37d32f1..75bb922485ac2239d0158b3ba80a33cc05976990 100644
--- a/modules/base/pymod/stutil.py
+++ b/modules/base/pymod/stutil.py
@@ -93,3 +93,13 @@ def Correl(xs, ys):
   sigma_x=math.sqrt(sigma_x/len(xs))
   sigma_y=math.sqrt(sigma_y/len(ys))  
   return cross_term/((len(xs)-1)*sigma_x*sigma_y)
+
+def Histogram(xs, bounds, num_bins):
+  bins=[0 for i in range(num_bins)]
+  d=1.0*num_bins/(bounds[1]-bounds[0])
+  for x in xs:
+    index=int((x-bounds[0])*d)
+    if index>num_bins-1 or index<0:
+      continue
+    bins[index]+=1
+  return bins
diff --git a/modules/gui/src/data_viewer/data_viewer_panel_base.cc b/modules/gui/src/data_viewer/data_viewer_panel_base.cc
index 0fb9c0c5b3c85c4c4ca8086becbc4fc1e88a4e47..5af82c95412a70473a65db79378fbbfd8c724acd 100644
--- a/modules/gui/src/data_viewer/data_viewer_panel_base.cc
+++ b/modules/gui/src/data_viewer/data_viewer_panel_base.cc
@@ -554,9 +554,9 @@ void DataViewerPanelBase::mouseMoveEvent(QMouseEvent* event)
     Point max_pos=WinToPoint(vsize.width(),vsize.height());
     Point min_pos=WinToPoint(0,0);
     selection_=Extent(Point(std::max(min_pos[0],std::min(drag_start[0],mouse_pos[0])),
-                            std::max(min_pos[1],std::min(drag_start[1],mouse_pos[1]))),
+                            std::max(min_pos[1],std::min(drag_start[1],mouse_pos[1])), slab_),
                       Point(std::max(drag_start[0],std::min(max_pos[0],mouse_pos[0])),
-                            std::max(drag_start[1],std::min(max_pos[1],mouse_pos[1]))));
+                            std::max(drag_start[1],std::min(max_pos[1],mouse_pos[1])), slab_));
     if(selection_mode_>0){
       Size s=selection_.GetSize();
       int minsize=std::min<int>(s[0],s[1]);