Index: Invariant/invariant.py
===================================================================
--- Invariant/invariant.py	(revision c4f52e30031074561aa4736f1d4261cb3b102464)
+++ Invariant/invariant.py	(revision 6d55d81ad59fec610ea78246847ad4bd0feb115d)
@@ -385,4 +385,5 @@
             #Process only data that inherited from DataLoader.Data_info.Data1D
             raise ValueError,"Data must be of type DataLoader.Data1D"
+        #from copy import deepcopy
         new_data = (self._scale * data) - self._background   
         
@@ -517,4 +518,10 @@
         return result_data
     
+    def get_data(self):
+        """
+            @return self._data
+        """
+        return self._data
+    
     def get_extrapolation_power(self, range='high'):
         """
Index: invariantview/perspectives/invariant/invariant.py
===================================================================
--- invariantview/perspectives/invariant/invariant.py	(revision f29a43370e88c77ffd9d856c6f9bde720f25ed4e)
+++ invariantview/perspectives/invariant/invariant.py	(revision 6d55d81ad59fec610ea78246847ad4bd0feb115d)
@@ -9,5 +9,5 @@
 """
 import wx
-from copy import deepcopy
+
 from sans.invariant import invariant
 
@@ -163,5 +163,5 @@
         id = None
         if hasattr(item,"id"):
-            id = deepcopy(item.id)
+            id = item.id
 
         data = Data1D(x=item.x, y=item.y, dx=None, dy=None)
@@ -171,5 +171,5 @@
         data.name = item.name
         ## allow to highlight data when plotted
-        data.interactive = deepcopy(item.interactive)
+        data.interactive = item.interactive
         ## when 2 data have the same id override the 1 st plotted
         data.id = id
@@ -222,5 +222,14 @@
         new_plot.id = self.__data.id + name
         wx.PostEvent(self.parent, NewPlotEvent(plot=new_plot, title=self.__data.name))
-
-
-        
+        
+    def plot_data(self, data):
+        """
+            replot the current data if the user enters a new scale or background
+        """
+        new_plot = self.copy_data(item=self.__data, dy=self.__data.dy)
+        new_plot.x = data.x
+        new_plot.y = data.y
+        new_plot.dx = data.dx
+        new_plot.dy = data.dy
+        wx.PostEvent(self.parent, NewPlotEvent(plot=new_plot, title=new_plot.name))
+        
Index: invariantview/perspectives/invariant/invariant_panel.py
===================================================================
--- invariantview/perspectives/invariant/invariant_panel.py	(revision e3f721e417a4529e02efe861b0d1cd8b7448ee41)
+++ invariantview/perspectives/invariant/invariant_panel.py	(revision 6d55d81ad59fec610ea78246847ad4bd0feb115d)
@@ -13,4 +13,5 @@
 from invariant_details import InvariantDetailsPanel, InvariantContainer
 from invariant_widgets import OutputTextCtrl, InvTextCtrl
+
 # The minimum q-value to be used when extrapolating
 Q_MINIMUM  = 1e-5
@@ -66,4 +67,6 @@
         #Data uses for computation
         self._data = data
+        self._scale = SCALE 
+        self._background = BACKGROUND
         #container of invariant value
         self.inv_container = None
@@ -151,7 +154,11 @@
             raise ValueError, "Need a background"
         if check_float(self.scale_tcl):
+            if float(scale)<= 0.0:
+                self.scale_tcl.SetBackgroundColour("pink")
+                self.scale_tcl.Refresh()
+                raise ValueError, "Receive invalid value for scale: %s"%(scale)
             return float(scale)
         else:
-            raise ValueError, "Receive invalid value for background : %s"%(scale)
+            raise ValueError, "Receive invalid value for scale : %s"%(scale)
         
     def get_contrast(self):
@@ -392,6 +399,11 @@
        
         #Compute invariant
+        bkg_changed = False
+        scale_changed = False
         try:
             self.get_qstar(inv=inv)
+            #if scale_changed or bkg_changed:
+            self._manager.plot_data(data=inv.get_data())
+            
         except:
             msg= "Error occurred computing invariant: %s"%sys.exc_value
