Index: src/sas/sascalc/pr/c_extensions/Cinvertor.c
===================================================================
--- src/sas/sascalc/pr/c_extensions/Cinvertor.c	(revision 959eb0181ad06828a748f04512f953aad5b31659)
+++ src/sas/sascalc/pr/c_extensions/Cinvertor.c	(revision cb62bd55ae79395ac6e01d8b2077f4d496625c41)
@@ -294,5 +294,5 @@
 }
 
-const char set_has_bck_doc[] =
+const char set_est_bck_doc[] =
 	"Sets background flag\n";
 
@@ -300,13 +300,13 @@
  * Sets the maximum distance
  */
-static PyObject * set_has_bck(Cinvertor *self, PyObject *args) {
-	int has_bck;
-
-	if (!PyArg_ParseTuple(args, "i", &has_bck)) return NULL;
-	self->params.has_bck = has_bck;
-	return Py_BuildValue("i", self->params.has_bck);
-}
-
-const char get_has_bck_doc[] =
+static PyObject * set_est_bck(Cinvertor *self, PyObject *args) {
+	int est_bck;
+
+	if (!PyArg_ParseTuple(args, "i", &est_bck)) return NULL;
+	self->params.est_bck = est_bck;
+	return Py_BuildValue("i", self->params.est_bck);
+}
+
+const char get_est_bck_doc[] =
 	"Gets background flag\n";
 
@@ -314,6 +314,6 @@
  * Gets the maximum distance
  */
-static PyObject * get_has_bck(Cinvertor *self, PyObject *args) {
-	return Py_BuildValue("i", self->params.has_bck);
+static PyObject * get_est_bck(Cinvertor *self, PyObject *args) {
+	return Py_BuildValue("i", self->params.est_bck);
 }
 
@@ -882,5 +882,5 @@
 	sqrt_alpha = sqrt(self->params.alpha);
 	pi = acos(-1.0);
-	offset = (self->params.has_bck==1) ? 0 : 1;
+	offset = (self->params.est_bck==1) ? 0 : 1;
 
     for (j=0; j<nfunc; j++) {
@@ -892,5 +892,5 @@
             }
             if (accept_q(self, self->params.x[i])){
-                if (self->params.has_bck==1 && j==0) {
+                if (self->params.est_bck==1 && j==0) {
                     a[i*nfunc+j] = 1.0/self->params.err[i];
                 } else {
@@ -906,5 +906,5 @@
         }
         for (i_r=0; i_r<nr; i_r++){
-            if (self->params.has_bck==1 && j==0) {
+            if (self->params.est_bck==1 && j==0) {
                 a[(i_r+self->params.npoints)*nfunc+j] = 0.0;
             } else {
@@ -1029,6 +1029,6 @@
 		   {"set_slit_height", (PyCFunction)set_slit_height, METH_VARARGS, set_slit_height_doc},
 		   {"get_slit_height", (PyCFunction)get_slit_height, METH_VARARGS, get_slit_height_doc},
-		   {"set_has_bck", (PyCFunction)set_has_bck, METH_VARARGS, set_has_bck_doc},
-		   {"get_has_bck", (PyCFunction)get_has_bck, METH_VARARGS, get_has_bck_doc},
+		   {"set_est_bck", (PyCFunction)set_est_bck, METH_VARARGS, set_est_bck_doc},
+		   {"get_est_bck", (PyCFunction)get_est_bck, METH_VARARGS, get_est_bck_doc},
 		   {"get_nx", (PyCFunction)get_nx, METH_VARARGS, get_nx_doc},
 		   {"get_ny", (PyCFunction)get_ny, METH_VARARGS, get_ny_doc},
Index: src/sas/sascalc/pr/c_extensions/invertor.c
===================================================================
--- src/sas/sascalc/pr/c_extensions/invertor.c	(revision 959eb0181ad06828a748f04512f953aad5b31659)
+++ src/sas/sascalc/pr/c_extensions/invertor.c	(revision cb62bd55ae79395ac6e01d8b2077f4d496625c41)
@@ -20,5 +20,5 @@
 	pars->q_min = -1.0;
 	pars->q_max = -1.0;
-	pars->has_bck = 0;
+	pars->est_bck = 0;
 }
 
@@ -313,3 +313,2 @@
     return sqrt(sum_r2/(2.0*sum));
 }
-
Index: src/sas/sascalc/pr/c_extensions/invertor.h
===================================================================
--- src/sas/sascalc/pr/c_extensions/invertor.h	(revision 959eb0181ad06828a748f04512f953aad5b31659)
+++ src/sas/sascalc/pr/c_extensions/invertor.h	(revision cb62bd55ae79395ac6e01d8b2077f4d496625c41)
@@ -27,5 +27,5 @@
     double q_max;
     /// Flag for whether or not to evalute a constant background while inverting
-    int has_bck;
+    int est_bck;
     /// Slit height in units of q [A-1]
     double slit_height;
Index: src/sas/sascalc/pr/invertor.py
===================================================================
--- src/sas/sascalc/pr/invertor.py	(revision 45dffa69cb5935e2da7c77a2f040debb07ceb1c6)
+++ src/sas/sascalc/pr/invertor.py	(revision cb62bd55ae79395ac6e01d8b2077f4d496625c41)
@@ -121,5 +121,5 @@
          self.q_min, self.q_max,
          self.x, self.y,
-         self.err, self.has_bck,
+         self.err, self.est_bck,
          self.slit_height, self.slit_width) = state
 
@@ -133,5 +133,5 @@
                  self.q_min, self.q_max,
                  self.x, self.y,
-                 self.err, self.has_bck,
+                 self.err, self.est_bck,
                  self.slit_height, self.slit_width,
                 )
@@ -175,11 +175,11 @@
         elif name == 'slit_width':
             return self.set_slit_width(value)
-        elif name == 'has_bck':
+        elif name == 'est_bck':
             if value == True:
-                return self.set_has_bck(1)
+                return self.set_est_bck(1)
             elif value == False:
-                return self.set_has_bck(0)
+                return self.set_est_bck(0)
             else:
-                raise ValueError, "Invertor: has_bck can only be True or False"
+                raise ValueError, "Invertor: est_bck can only be True or False"
 
         return Cinvertor.__setattr__(self, name, value)
@@ -220,6 +220,6 @@
         elif name == 'slit_width':
             return self.get_slit_width()
-        elif name == 'has_bck':
-            value = self.get_has_bck()
+        elif name == 'est_bck':
+            value = self.get_est_bck()
             if value == 1:
                 return True
@@ -248,5 +248,6 @@
         invertor.y = self.y
         invertor.err = self.err
-        invertor.has_bck = self.has_bck
+        invertor.est_bck = self.est_bck
+        invertor.background = self.background
         invertor.slit_height = self.slit_height
         invertor.slit_width = self.slit_width
@@ -290,6 +291,11 @@
         """
         # Reset the background value before proceeding
-        self.background = 0.0
-        return self.lstsq(nfunc, nr=nr)
+        # self.background = 0.0
+        if not self.est_bck:
+            self.y -= self.background
+        out, cov = self.lstsq(nfunc, nr=nr)
+        if not self.est_bck:
+            self.y += self.background
+        return out, cov
 
     def iq(self, out, q):
@@ -454,5 +460,5 @@
 
         # If we need to fit the background, add a term
-        if self.has_bck == True:
+        if self.est_bck == True:
             nfunc_0 = nfunc
             nfunc += 1
@@ -500,6 +506,5 @@
 
         # Keep a copy of the last output
-        if self.has_bck == False:
-            self.background = 0
+        if self.est_bck == False:
             self.out = c
             self.cov = err
@@ -653,5 +658,5 @@
         file.write("#slit_width=%g\n" % self.slit_width)
         file.write("#background=%g\n" % self.background)
-        if self.has_bck == True:
+        if self.est_bck == True:
             file.write("#has_bck=1\n")
         else:
@@ -734,7 +739,7 @@
                         toks = line.split('=')
                         if int(toks[1]) == 1:
-                            self.has_bck = True
+                            self.est_bck = True
                         else:
-                            self.has_bck = False
+                            self.est_bck = False
 
                     # Now read in the parameters
Index: src/sas/sasgui/perspectives/pr/inversion_panel.py
===================================================================
--- src/sas/sasgui/perspectives/pr/inversion_panel.py	(revision a0e6b1b9f274f2a46d9f25fe7801411ef0701217)
+++ src/sas/sasgui/perspectives/pr/inversion_panel.py	(revision cb62bd55ae79395ac6e01d8b2077f4d496625c41)
@@ -73,5 +73,5 @@
         self.bck_est_ctl = None
         self.bck_man_ctl = None
-        self.has_bck = True
+        self.est_bck = True
         self.bck_input = None
         self.bck_ctl = None
@@ -330,5 +330,5 @@
 
         # Background evaluation checkbox
-        state.estimate_bck = self.has_bck
+        state.estimate_bck = self.est_bck
         state.bck_value = bck
 
@@ -382,5 +382,5 @@
             self.bck_input.Enable()
             self.bck_input.SetValue(str(state.bck_value))
-        self.has_bck = state.estimate_bck
+        self.est_bck = state.estimate_bck
         self.bck_value = state.bck_value
 
@@ -804,6 +804,6 @@
 
     def _on_bck_changed(self, evt=None):
-        self.has_bck = self.bck_est_ctl.GetValue()
-        if self.has_bck:
+        self.est_bck = self.bck_est_ctl.GetValue()
+        if self.est_bck:
             self.bck_input.Disable()
         else:
@@ -828,5 +828,6 @@
                                                       d_max=dmax,
                                                       q_min=qmin, q_max=qmax,
-                                                      bck=self.has_bck,
+                                                      est_bck=self.est_bck,
+                                                      bck_val=bck,
                                                       height=height,
                                                       width=width)
@@ -937,5 +938,5 @@
 
         # Read background
-        if not self.has_bck:
+        if not self.est_bck:
             try:
                 bck_str = self.bck_input.GetValue()
@@ -987,5 +988,6 @@
                                                    d_max=dmax,
                                                    q_min=qmin, q_max=qmax,
-                                                   bck=self.has_bck,
+                                                   est_bck=self.est_bck,
+                                                   bck_val = bck,
                                                    height=height,
                                                    width=width)
Index: src/sas/sasgui/perspectives/pr/pr.py
===================================================================
--- src/sas/sasgui/perspectives/pr/pr.py	(revision a1b8fee73528559155793dd74cda07d0c32e9d72)
+++ src/sas/sasgui/perspectives/pr/pr.py	(revision cb62bd55ae79395ac6e01d8b2077f4d496625c41)
@@ -68,5 +68,6 @@
         self.q_min = None
         self.q_max = None
-        self.has_bck = False
+        self.est_bck = False
+        self.bck_val = 0
         self.slit_height = 0
         self.slit_width = 0
@@ -828,4 +829,5 @@
         self.control_panel.iq0 = pr.iq0(out)
         self.control_panel.bck = pr.background
+        self.control_panel.bck_input.SetValue("{:.2g}".format(pr.background))
 
         # Show I(q) fit
@@ -907,5 +909,5 @@
 
     def setup_plot_inversion(self, alpha, nfunc, d_max, q_min=None, q_max=None,
-                             bck=False, height=0, width=0):
+                             est_bck=False, bck_val=0, height=0, width=0):
         """
             Set up inversion from plotted data
@@ -916,5 +918,6 @@
         self.q_min = q_min
         self.q_max = q_max
-        self.has_bck = bck
+        self.est_bck = est_bck
+        self.bck_val = bck_val
         self.slit_height = height
         self.slit_width = width
@@ -930,5 +933,5 @@
     def estimate_plot_inversion(self, alpha, nfunc, d_max,
                                 q_min=None, q_max=None,
-                                bck=False, height=0, width=0):
+                                est_bck=False, bck_val=0, height=0, width=0):
         """
             Estimate parameters from plotted data
@@ -939,5 +942,6 @@
         self.q_min = q_min
         self.q_max = q_max
-        self.has_bck = bck
+        self.est_bck = est_bck
+        self.bck_val = bck_val
         self.slit_height = height
         self.slit_width = width
@@ -973,7 +977,8 @@
         pr.x = self.current_plottable.x
         pr.y = self.current_plottable.y
-        pr.has_bck = self.has_bck
+        pr.est_bck = self.est_bck
         pr.slit_height = self.slit_height
         pr.slit_width = self.slit_width
+        pr.background = self.bck_val
 
         # Keep track of the plot window title to ensure that
@@ -1019,5 +1024,5 @@
         self.q_min = q_min
         self.q_max = q_max
-        self.has_bck = bck
+        self.est_bck = bck
         self.slit_height = height
         self.slit_width = width
@@ -1042,5 +1047,5 @@
         self.q_min = q_min
         self.q_max = q_max
-        self.has_bck = bck
+        self.est_bck = bck
         self.slit_height = height
         self.slit_width = width
@@ -1115,5 +1120,5 @@
             pr.y = y
             pr.err = err
-            pr.has_bck = self.has_bck
+            pr.est_bck = self.est_bck
             pr.slit_height = self.slit_height
             pr.slit_width = self.slit_width
