diff --git a/GUI/Model/Job/JobsSet.h b/GUI/Model/Job/JobsSet.h
index c3c3d9fd5a6f85ec54923533f0962b1d80b1deb5..f69e1b225864f54b2672f040f16814723c590fe7 100644
--- a/GUI/Model/Job/JobsSet.h
+++ b/GUI/Model/Job/JobsSet.h
@@ -53,6 +53,7 @@ signals:
     void jobMeritsAttention(JobItem* item);
     void globalProgress(int);
     void jobAdded();
+    void setChanged();
 
 private slots:
     void onFinishedJob(JobItem* job_item);
diff --git a/GUI/View/Canvas/ProgressCanvas.cpp b/GUI/View/Canvas/ProgressCanvas.cpp
index 6d758298d0c0d2d2ad25f72918ce6bd2d27754c6..3d0aaa519deb8ec38b16ac955b28599e0930f620 100644
--- a/GUI/View/Canvas/ProgressCanvas.cpp
+++ b/GUI/View/Canvas/ProgressCanvas.cpp
@@ -14,7 +14,8 @@
 
 #include "GUI/View/Canvas/ProgressCanvas.h"
 #include "Base/Util/Assert.h"
-#include "GUI/Model/Job/JobItem.h"
+#include "GUI/Model/Job/JobsSet.h"
+#include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/Model/Tune/FitSuiteItem.h"
 #include "GUI/View/Plotter/HistogramPlot.h"
 #include <QVBoxLayout>
@@ -29,20 +30,25 @@ ProgressCanvas::ProgressCanvas()
     layout->addWidget(m_hist_plot);
 
     setStyleSheet("background-color:white;");
+
+    connect(gDoc->jobs(), &JobsSet::setChanged, this, &ProgressCanvas::setJobItem);
 }
 
-void ProgressCanvas::setJobItem(JobItem* item)
+void ProgressCanvas::setJobItem()
 {
-    ASSERT(item);
-    m_job_item = item;
-
-    connect(item->fitSuiteItem(), &FitSuiteItem::iterationCountChanged, this,
-            &ProgressCanvas::onIterationCountChanged, Qt::UniqueConnection);
+    if (const JobItem* ji = gDoc->jobs()->currentItem()) {
+	connect(ji->fitSuiteItem(), &FitSuiteItem::iterationCountChanged, this,
+		&ProgressCanvas::onIterationCountChanged, Qt::UniqueConnection);
+	show();
+    } else
+	hide();
 }
 
 void ProgressCanvas::onIterationCountChanged(int iter)
 {
-    double chi = m_job_item->fitSuiteItem()->chi2();
+    const JobItem* ji = gDoc->jobs()->currentItem();
+    ASSERT(ji);
+    double chi = ji->fitSuiteItem()->chi2();
     if (iter == 1)
         m_hist_plot->clearData();
     m_hist_plot->addData(static_cast<double>(iter), chi);
diff --git a/GUI/View/Canvas/ProgressCanvas.h b/GUI/View/Canvas/ProgressCanvas.h
index 6e3e7ea369aa0f792bad20a12af0bd56bd6fc112..2b254d81089c39d204566cde050cd0a7db06ba18 100644
--- a/GUI/View/Canvas/ProgressCanvas.h
+++ b/GUI/View/Canvas/ProgressCanvas.h
@@ -18,7 +18,6 @@
 #include <QWidget>
 
 class HistogramPlot;
-class JobItem;
 
 //! Intended for showing chi2 .vs interation count dependency.
 //! The main goal is to fill vacant place in Fit2DFrame.
@@ -28,13 +27,11 @@ class ProgressCanvas : public QWidget {
 public:
     ProgressCanvas();
 
-    void setJobItem(JobItem* job_item);
-
 private:
+    void setJobItem();
     void onIterationCountChanged(int iter);
 
     HistogramPlot* m_hist_plot;
-    const JobItem* m_job_item;
 };
 
 #endif // BORNAGAIN_GUI_VIEW_CANVAS_PROGRESSCANVAS_H
diff --git a/GUI/View/Frame/Fit1DFrame.cpp b/GUI/View/Frame/Fit1DFrame.cpp
index 15b8902ca50367f6297e86cf175eff7c810a1ee9..aee35f4ce2566f3c2d96ddc675450250528ed4e4 100644
--- a/GUI/View/Frame/Fit1DFrame.cpp
+++ b/GUI/View/Frame/Fit1DFrame.cpp
@@ -21,7 +21,6 @@
 #include "GUI/Model/Data/Data1DItem.h"
 #include "GUI/Model/Data/RangeUtil.h"
 #include "GUI/Model/Job/DataSource.h"
-#include "GUI/Model/Job/JobItem.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/View/Canvas/ProgressCanvas.h"
 #include "GUI/View/Canvas/SpecularPlotCanvas.h"
@@ -30,7 +29,7 @@
 #include "GUI/View/Setup/AxisPanel.h"
 #include "GUI/View/Setup/FrameActions.h"
 
-Fit1DFrame::Fit1DFrame(JobItem* job_item)
+Fit1DFrame::Fit1DFrame()
     : m_data_canvas(new SpecularPlotCanvas)
     , m_diff_canvas(new SpecularPlotCanvas)
     , m_progress_canvas(new ProgressCanvas)
@@ -79,9 +78,6 @@ Fit1DFrame::Fit1DFrame(JobItem* job_item)
     m_data_canvas->setData1DItems(
         {m_data_source->simuData1DItem(), m_data_source->realData1DItem()});
     m_diff_canvas->setData1DItems({m_data_source->diffData1DItem()});
-
-    ASSERT(job_item);
-    m_progress_canvas->setJobItem(job_item);
 }
 
 Fit1DFrame::~Fit1DFrame() = default;
diff --git a/GUI/View/Frame/Fit1DFrame.h b/GUI/View/Frame/Fit1DFrame.h
index 7c3aae87d4e8df10847d4c7f5497181e7edf9c63..67412f002ac9e69d454b54e6ec6dd759d9b00b3d 100644
--- a/GUI/View/Frame/Fit1DFrame.h
+++ b/GUI/View/Frame/Fit1DFrame.h
@@ -19,8 +19,6 @@
 #include <QWidget>
 
 class DataSource;
-class JobItem;
-class JobRealBase;
 class PlotStatusLabel;
 class ProgressCanvas;
 class SpecularPlotCanvas;
@@ -31,7 +29,7 @@ class SpecularPlotCanvas;
 class Fit1DFrame : public QWidget {
     Q_OBJECT
 public:
-    explicit Fit1DFrame(JobItem* item);
+    Fit1DFrame();
     ~Fit1DFrame();
 
 private:
diff --git a/GUI/View/Frame/Fit2DFrame.cpp b/GUI/View/Frame/Fit2DFrame.cpp
index bd4925d9704b4cde94ec6eb2f7f9b4ae097734a7..193fac9b3607b9e553e7628ba480e48441421fd9 100644
--- a/GUI/View/Frame/Fit2DFrame.cpp
+++ b/GUI/View/Frame/Fit2DFrame.cpp
@@ -20,7 +20,6 @@
 #include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Data/RangeUtil.h"
 #include "GUI/Model/Job/DataSource.h"
-#include "GUI/Model/Job/JobItem.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/View/Canvas/ColorMapCanvas.h"
 #include "GUI/View/Canvas/ProgressCanvas.h"
@@ -30,7 +29,7 @@
 #include "GUI/View/Setup/FrameActions.h"
 #include <QVBoxLayout>
 
-Fit2DFrame::Fit2DFrame(JobItem* job_item)
+Fit2DFrame::Fit2DFrame()
     : m_real_canvas(new ColorMapCanvas)
     , m_simu_canvas(new ColorMapCanvas)
     , m_diff_canvas(new ColorMapCanvas)
@@ -82,9 +81,6 @@ Fit2DFrame::Fit2DFrame(JobItem* job_item)
     m_simu_canvas->itemToCanvas(m_data_source->simuData2DItem());
     m_real_canvas->itemToCanvas(m_data_source->realData2DItem());
     m_diff_canvas->itemToCanvas(m_data_source->diffData2DItem());
-
-    ASSERT(job_item);
-    m_progress_canvas->setJobItem(job_item);
 }
 
 Fit2DFrame::~Fit2DFrame() = default;
diff --git a/GUI/View/Frame/Fit2DFrame.h b/GUI/View/Frame/Fit2DFrame.h
index aa7d366623c6b5029a16c147ed772f1246ac95f8..d403ef944c1d1746fc26c112f17c71d5cd46ba37 100644
--- a/GUI/View/Frame/Fit2DFrame.h
+++ b/GUI/View/Frame/Fit2DFrame.h
@@ -20,7 +20,6 @@
 
 class ColorMapCanvas;
 class DataSource;
-class JobItem;
 class PlotStatusLabel;
 class ProgressCanvas;
 
@@ -29,7 +28,7 @@ class ProgressCanvas;
 class Fit2DFrame : public QWidget {
     Q_OBJECT
 public:
-    explicit Fit2DFrame(JobItem* item);
+    Fit2DFrame();
     ~Fit2DFrame();
 
 private:
diff --git a/GUI/View/Frame/StackedFrames.cpp b/GUI/View/Frame/StackedFrames.cpp
index 96ae62c006bf814525877e11e9a5ed621c0a0bd5..274e7d4f09c3fc62dc246751898485a973394420 100644
--- a/GUI/View/Frame/StackedFrames.cpp
+++ b/GUI/View/Frame/StackedFrames.cpp
@@ -97,9 +97,9 @@ QWidget* StackedJobFrames::newFrame(QObject* obj) const
         return new Plot2DFrame;
     if (auto* item = dynamic_cast<JobItem*>(obj)) {
         if (item->rank() == 1)
-            return new Fit1DFrame(item);
+            return new Fit1DFrame;
         if (item->rank() == 2)
-            return new Fit2DFrame(item);
+            return new Fit2DFrame;
     }
     ASSERT_NEVER;
 }