Index: src/sas/sasgui/guiframe/local_perspectives/plotting/Plotter1D.py
===================================================================
--- src/sas/sasgui/guiframe/local_perspectives/plotting/Plotter1D.py	(revision 5bcb6a9d87d227362da6e1e2eaa0e45a2ce29299)
+++ src/sas/sasgui/guiframe/local_perspectives/plotting/Plotter1D.py	(revision 29e872e4d97689a48f665443a8b1fbfae9813a54)
@@ -65,5 +65,4 @@
         # context menu
         self._slicerpop = None
-
         self._available_data = []
         self._symbol_labels = self.get_symbol_label()
@@ -95,4 +94,7 @@
         self.parent.SetFocus()
 
+        # If true, there are 3 qrange bars
+        self.is_corfunc = False
+
 
     def get_symbol_label(self):
@@ -214,4 +216,6 @@
         if active_ctrl == None:
             return
+        if hasattr(event, 'is_corfunc'):
+            self.is_corfunc = event.is_corfunc
         if event.id in self.plots.keys():
             ctrl = event.ctrl
@@ -222,4 +226,7 @@
             values = [max(x_data.min(), float(ctrl[0].GetValue())),
                       min(x_data.max(), float(ctrl[1].GetValue()))]
+            if len(ctrl) == 3:
+                colors.append('purple')
+                values.append(min(x_data.max(), float(ctrl[2].GetValue())))
             if self.ly == None:
                 self.ly = []
@@ -232,5 +239,5 @@
                 xval = float(active_ctrl.GetValue())
                 position = self.get_data_xy_vals(xval)
-                if position != None:
+                if position != None and not self.is_corfunc:
                     wx.PostEvent(self.parent, StatusEvent(status=position))
             except:
@@ -293,4 +300,6 @@
         ly0x = ly[0].get_xdata()
         ly1x = ly[1].get_xdata()
+        ly2x = None
+        if self.is_corfunc: ly2x = ly[2].get_xdata()
         self.q_ctrl[0].SetBackgroundColour('white')
         self.q_ctrl[1].SetBackgroundColour('white')
@@ -306,4 +315,14 @@
                 self.q_ctrl[0].SetValue(str(pos_x))
                 self.q_ctrl[1].SetBackgroundColour('pink')
+        elif ly2x is not None and ly1x >= ly2x:
+            if self.vl_ind == 1:
+                ly[2].set_xdata(posx)
+                ly[2].set_zorder(nop)
+                self.q_ctrl[2].SetValue(str(pos_x))
+            elif self.vl_ind == 2:
+                ly[1].set_xdata(posx)
+                ly[1].set_zorder(nop)
+                self.q_ctrl[1].SetValue(str(pos_x))
+
 
     def _get_cusor_lines(self, event):
@@ -325,9 +344,14 @@
             dqmin = math.fabs(event.xdata - self.ly[0].get_xdata())
             dqmax = math.fabs(event.xdata - self.ly[1].get_xdata())
-            is_qmax = dqmin > dqmax
-            if is_qmax:
-                self.vl_ind = 1
+            if not self.is_corfunc:
+                is_qmax = dqmin > dqmax
+                if is_qmax:
+                    self.vl_ind = 1
+                else:
+                    self.vl_ind = 0
             else:
-                self.vl_ind = 0
+                dqmax2 = math.fabs(event.xdata - self.ly[2].get_xdata())
+                closest = min(dqmin, dqmax, dqmax2)
+                self.vl_ind = { dqmin: 0, dqmax: 1, dqmax2: 2 }.get(closest)
 
     def cusor_line(self, event):
Index: src/sas/sasgui/guiframe/local_perspectives/plotting/Plotter2D.py
===================================================================
--- src/sas/sasgui/guiframe/local_perspectives/plotting/Plotter2D.py	(revision 2d647cf55c457fdf33a342b65bf5a6e6eaa853d8)
+++ src/sas/sasgui/guiframe/local_perspectives/plotting/Plotter2D.py	(revision b2b3693291d8e49fd33718753161206c1964548c)
@@ -316,5 +316,5 @@
 
         slicerpop.AppendSeparator()
-        if len(self.data2D.detector) == 1:
+        if len(self.data2D.detector) <= 1:
             item_list = self.parent.get_current_context_menu(self)
             if (not item_list == None) and (not len(item_list) == 0) and\
Index: src/sas/sasgui/guiframe/local_perspectives/plotting/plotting.py
===================================================================
--- src/sas/sasgui/guiframe/local_perspectives/plotting/plotting.py	(revision d85c194ea2f78cb2b9b3de9c969e1b8ebea6b6d2)
+++ src/sas/sasgui/guiframe/local_perspectives/plotting/plotting.py	(revision 6ffa0ddc406b5f3b0441f71973d3271354b486e9)
@@ -16,4 +16,5 @@
 from sas.sasgui.guiframe.events import EVT_NEW_PLOT
 from sas.sasgui.guiframe.events import EVT_PLOT_QRANGE
+from sas.sasgui.guiframe.events import EVT_PLOT_LIM
 from sas.sasgui.guiframe.events import DeletePlotPanelEvent
 from sas.sasgui.guiframe.plugin_base import PluginBase
@@ -79,4 +80,5 @@
         self.parent.Bind(EVT_NEW_PLOT, self._on_plot_event)
         self.parent.Bind(EVT_PLOT_QRANGE, self._on_plot_qrange)
+        self.parent.Bind(EVT_PLOT_LIM, self._on_plot_lim)
         # We have no initial panels for this plug-in
         return []
@@ -95,4 +97,19 @@
             return
         panel.on_plot_qrange(event)
+
+    def _on_plot_lim(self, event=None):
+        if event == None:
+            return
+        if event.id in self.plot_panels.keys():
+            panel = self.plot_panels[event.id]
+        elif event.group_id in self.plot_panels.keys():
+            panel = self.plot_panels[event.group_id]
+        else:
+            return
+        if hasattr(event, 'xlim'):
+            panel.subplot.set_xlim(event.xlim)
+        if hasattr(event, 'ylim'):
+            panel.subplot.set_ylim(event.ylim)
+
 
     def _on_show_panel(self, event):
@@ -312,3 +329,7 @@
                 new_panel = self.create_2d_panel(data, group_id)
             self.create_panel_helper(new_panel, data, group_id, title)
+            if hasattr(event, 'xlim'):
+                new_panel.subplot.set_xlim(event.xlim)
+            if hasattr(event, 'ylim'):
+                new_panel.subplot.set_ylim(event.ylim)
         return
