Index: src/sas/sasgui/perspectives/corfunc/corfunc.py
===================================================================
--- src/sas/sasgui/perspectives/corfunc/corfunc.py	(revision 3b8efecd51cd7dcd542c1acb2b003aa48d3951db)
+++ src/sas/sasgui/perspectives/corfunc/corfunc.py	(revision 911dbe488bbc4658a0d9a515a46b7b2240e021a5)
@@ -22,4 +22,7 @@
 IQ_DATA_LABEL = r"$I_{obs}(q)$"
 IQ_EXTRAPOLATED_DATA_LABEL = r"$I_{extrap}(q)$"
+
+GROUP_ID_TRANSFORM = r"$\Gamma(x)$"
+TRANSFORM_LABEL = r"$\Gamma(x)$"
 
 
@@ -129,17 +132,23 @@
         new_plot = Data1D(data.x, data.y, dy=data.dy)
 
+        group_id = ""
         if label == IQ_DATA_LABEL or label == IQ_EXTRAPOLATED_DATA_LABEL:
             new_plot.xaxis("\\rm{Q}", 'A^{-1}')
             new_plot.yaxis("\\rm{Intensity} ", "cm^{-1}")
-
+            group_id = GROUP_ID_IQ_DATA
+        elif label == TRANSFORM_LABEL:
+            new_plot.xaxis("{x}", 'A')
+            new_plot.yaxis("{\\Gamma}", '')
+            group_id = GROUP_ID_TRANSFORM
         new_plot.symbol = GUIFRAME_ID.CURVE_SYMBOL_NUM
         new_plot.id = label
         new_plot.name = label
+        new_plot.group_id = group_id
         new_plot.interactive = True
-        new_plot.group_id = GROUP_ID_IQ_DATA
-        new_plot.title = "I(q)"
+        new_plot.title = group_id.replace('$', '').replace('\\', '')
         # Show data on a linear scale
         new_plot.xtransform = 'x'
         new_plot.ytransform = 'y'
         wx.PostEvent(self.parent,
-                     NewPlotEvent(plot=new_plot, title="I(q)", reset=reset))
+                     NewPlotEvent(plot=new_plot, title=new_plot.title,
+                        reset=reset))
Index: src/sas/sasgui/perspectives/corfunc/corfunc_panel.py
===================================================================
--- src/sas/sasgui/perspectives/corfunc/corfunc_panel.py	(revision f2bbabf09f7c6f91af3438d191f71b5b464ad173)
+++ src/sas/sasgui/perspectives/corfunc/corfunc_panel.py	(revision 911dbe488bbc4658a0d9a515a46b7b2240e021a5)
@@ -38,6 +38,8 @@
         self.SetWindowVariant(variant=FONT_VARIANT)
         self._manager = manager
-        self._data = data # The data to be analysed
+        # The data with no correction for background values
+        self._data = data # The data to be analysed (corrected fr background)
         self._extrapolated_data = None # The extrapolated data set
+        self._calculator = CorfuncCalculator()
         self._data_name_box = None # Text box to show name of file
         self._background_input = None
@@ -45,4 +47,6 @@
         self._qmax1_input = None
         self._qmax2_input = None
+        self._transform_btn = None
+        self._compute_btn = None
         self.qmin = 0
         self.qmax = (0, 0)
@@ -107,11 +111,13 @@
         :param data: The data that has been loaded
         """
+        self._transform_btn.Disable()
         if data is None:
             return
         self._data_name_box.SetValue(str(data.title))
         self._data = data
+        self._calculator.set_data(data)
         if self._manager is not None:
             from sas.sasgui.perspectives.corfunc.corfunc import IQ_DATA_LABEL
-            self._manager.show_data(data, IQ_DATA_LABEL, reset=True)
+            self._manager.show_data(self._data, IQ_DATA_LABEL, reset=True)
         if set_qrange:
             lower = data.x[-1]*0.05
@@ -120,5 +126,5 @@
             self.set_qmin(lower)
             self.set_qmax((upper1, upper2))
-            self.set_background(0.0)
+            self.set_background(self._calculator.compute_background(self.qmax))
 
     def get_data(self):
@@ -134,7 +140,8 @@
             wx.PostEvent(self.parent.parent, StatusEvent(status=msg))
             return
-        calculator = CorfuncCalculator(self._data, self.qmin, self.qmax,
-            background=self.background)
-        self._extrapolated_data = calculator.compute_extrapolation()
+        self._calculator.set_data(self._data)
+        self._calculator.lowerq = self.qmin
+        self._calculator.upperq = self.qmax
+        self._extrapolated_data = self._calculator.compute_extrapolation()
         # TODO: Find way to set xlim and ylim so full range of data can be
         # plotted
@@ -148,4 +155,14 @@
             IQ_EXTRAPOLATED_DATA_LABEL
         self._manager.show_data(to_plot, IQ_EXTRAPOLATED_DATA_LABEL)
+        self._transform_btn.Enable()
+
+    def compute_transform(self, event=None):
+        transformed_data = self._calculator.compute_transform(
+            self._extrapolated_data, self.background)
+        from sas.sasgui.perspectives.corfunc.corfunc import TRANSFORM_LABEL
+        import numpy as np
+        plot_x = transformed_data.x[np.where(transformed_data.x <= 200)]
+        plot_y = transformed_data.y[np.where(transformed_data.x <= 200)]
+        self._manager.show_data(Data1D(plot_x, plot_y), TRANSFORM_LABEL)
 
 
@@ -183,4 +200,6 @@
         self._background_input.SetValue(str(bg))
 
+    def _compute_background(self, event=None):
+        self.set_background(self._calculator.compute_background(self.qmax))
 
     def _on_enter_input(self, event=None):
@@ -200,4 +219,9 @@
         group_id = GROUP_ID_IQ_DATA
         if event is not None:
+            if self._manager is not None and\
+                event.GetEventObject() == self._background_input:
+                from sas.sasgui.perspectives.corfunc.corfunc\
+                    import IQ_DATA_LABEL
+                self._manager.show_data(self._data, IQ_DATA_LABEL, reset=True)
             wx.PostEvent(self._manager.parent, PlotQrangeEvent(
                 ctrl=[self._qmin_input, self._qmax1_input, self._qmax2_input],
@@ -309,4 +333,9 @@
             wx.RIGHT | wx.EXPAND, 5)
 
+        background_button = wx.Button(self, wx.NewId(), "Calculate",
+            size=(75, 25))
+        background_button.Bind(wx.EVT_BUTTON, self._compute_background)
+        q_sizer.Add(background_button, (1, 2), (1, 1), wx.RIGHT | wx.EXPAND, 5)
+
         qrange_label = wx.StaticText(self, -1, "Q Range:", size=(50,20))
         q_sizer.Add(qrange_label, (2,0), (1,1), wx.LEFT | wx.EXPAND, 5)
@@ -395,12 +424,16 @@
 
         extrapolate_btn = wx.Button(self, wx.NewId(), "Extrapolate")
-        transform_btn = wx.Button(self, wx.NewId(), "Transform")
-        compute_btn = wx.Button(self, wx.NewId(), "Compute Measuments")
+        self._transform_btn = wx.Button(self, wx.NewId(), "Transform")
+        self._compute_btn = wx.Button(self, wx.NewId(), "Compute Measuments")
+
+        self._transform_btn.Disable()
+        self._compute_btn.Disable()
 
         extrapolate_btn.Bind(wx.EVT_BUTTON, self.compute_extrapolation)
+        self._transform_btn.Bind(wx.EVT_BUTTON, self.compute_transform)
 
         controls_sizer.Add(extrapolate_btn, wx.CENTER | wx.EXPAND)
-        controls_sizer.Add(transform_btn, wx.CENTER | wx.EXPAND)
-        controls_sizer.Add(compute_btn, wx.CENTER | wx.EXPAND)
+        controls_sizer.Add(self._transform_btn, wx.CENTER | wx.EXPAND)
+        controls_sizer.Add(self._compute_btn, wx.CENTER | wx.EXPAND)
 
         controlbox_sizer.Add(controls_sizer, wx.TOP | wx.EXPAND, 0)
