diff --git a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/Indirect/ConvFit.h b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/Indirect/ConvFit.h
index f31f2d7f4ca78ca4301b6ba374043a5498417728..2c4c4959d4bcb775b337b65b956d3f85e0972ece 100644
--- a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/Indirect/ConvFit.h
+++ b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/Indirect/ConvFit.h
@@ -30,7 +30,7 @@ namespace IDA
     void bgTypeSelection(int index);
     void newDataLoaded(const QString wsName);
     void plotInput();
-    void plotGuess(QtProperty*);
+    void plotGuess();
     void singleFit();
     void specMinChanged(int value);
     void specMaxChanged(int value);
diff --git a/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/ConvFit.cpp b/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/ConvFit.cpp
index d2b9bf39281865225fc85a1af832623c4526a6af..ebf92f8aec320ee0b08f8a1ef738e6179207a577 100644
--- a/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/ConvFit.cpp
+++ b/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/ConvFit.cpp
@@ -105,9 +105,13 @@ namespace IDA
     connect(m_rangeSelectors["ConvFitHWHM"], SIGNAL(maxValueChanged(double)), this, SLOT(hwhmChanged(double)));
     connect(m_dblManager, SIGNAL(valueChanged(QtProperty*, double)), this, SLOT(updateRS(QtProperty*, double)));
     connect(m_blnManager, SIGNAL(valueChanged(QtProperty*, bool)), this, SLOT(checkBoxUpdate(QtProperty*, bool)));
-    connect(m_dblManager, SIGNAL(propertyChanged(QtProperty*)), this, SLOT(plotGuess(QtProperty*)));
     connect(m_uiForm.ckTempCorrection, SIGNAL(toggled(bool)), m_uiForm.leTempCorrection, SLOT(setEnabled(bool)));
 
+    // Update guess curve when certain things happen
+    connect(m_dblManager, SIGNAL(propertyChanged(QtProperty*)), this, SLOT(plotGuess()));
+    connect(m_uiForm.cbFitType, SIGNAL(currentIndexChanged(int)), this, SLOT(plotGuess()));
+    connect(m_uiForm.ckPlotGuess, SIGNAL(stateChanged(int)), this, SLOT(plotGuess()));
+
     // Have FWHM Range linked to Fit Start/End Range
     connect(m_rangeSelectors["ConvFitRange"], SIGNAL(rangeChanged(double, double)), m_rangeSelectors["ConvFitHWHM"], SLOT(setRange(double, double)));
     m_rangeSelectors["ConvFitHWHM"]->setRange(-1.0,1.0);
@@ -705,10 +709,13 @@ namespace IDA
     }
   }
 
-  void ConvFit::plotGuess(QtProperty*)
+  void ConvFit::plotGuess()
   {
-    // Do nothing if there is no sample data curve
-    if(!m_uiForm.ppPlot->hasCurve("Sample"))
+    m_uiForm.ppPlot->removeSpectrum("Guess");
+
+    // Do nothing if there is not a sample and resolution
+    if(!(m_uiForm.dsSampleInput->isValid() && m_uiForm.dsResInput->isValid()
+          && m_uiForm.ckPlotGuess->isChecked()))
       return;
 
     bool tieCentres = (m_uiForm.cbFitType->currentIndex() > 1);
@@ -762,7 +769,6 @@ namespace IDA
     createWsAlg->execute();
     MatrixWorkspace_sptr guessWs = createWsAlg->getProperty("OutputWorkspace");
 
-    m_uiForm.ppPlot->removeSpectrum("Fit");
     m_uiForm.ppPlot->addSpectrum("Guess", guessWs, 0, Qt::green);
   }
 
diff --git a/Code/Mantid/MantidQt/MantidWidgets/src/PreviewPlot.cpp b/Code/Mantid/MantidQt/MantidWidgets/src/PreviewPlot.cpp
index 9ba4a80559461c88442177c21b30a231960c9995..376582042ef48e347e4b0a87d5af693a1484e9e4 100644
--- a/Code/Mantid/MantidQt/MantidWidgets/src/PreviewPlot.cpp
+++ b/Code/Mantid/MantidQt/MantidWidgets/src/PreviewPlot.cpp
@@ -171,7 +171,7 @@ void PreviewPlot::setAxisRange(QPair<double, double> range, int axisID)
     throw std::runtime_error("Supplied range is invalid.");
 
   m_uiForm.plot->setAxisScale(axisID, range.first, range.second);
-  replot();
+  emit needToReplot();
 }
 
 
@@ -310,6 +310,8 @@ void PreviewPlot::removeSpectrum(const QString & curveName)
   // Remove the curve from the map
   if(it != m_curves.end())
     m_curves.erase(it);
+
+  emit needToReplot();
 }
 
 
@@ -449,7 +451,7 @@ void PreviewPlot::hardReplot()
     m_curves[*it].curve = addCurve(m_curves[*it].ws, m_curves[*it].wsIndex, m_curves[*it].colour);
   }
 
-  replot();
+  emit needToReplot();
 }