diff --git a/GUI/Model/Model/JobQueueData.cpp b/GUI/Model/Model/JobQueueData.cpp
index d0f2235bee45a799fa68678df2a430d8a61e2c16..590a8c4af1f2716063d87c4a1d9d26d529118703 100644
--- a/GUI/Model/Model/JobQueueData.cpp
+++ b/GUI/Model/Model/JobQueueData.cpp
@@ -226,9 +226,8 @@ void JobQueueData::processFinishedJob(JobWorker* worker, JobItem* jobItem)
     if (worker->status() == JobStatus::Failed)
         jobItem->setComments(worker->failureMessage());
     else {
-        // propagating simulation results
-        auto* simulation = getSimulation(worker->identifier());
-        jobItem->setResults(simulation->result());
+        ASSERT(worker->result());
+        jobItem->setResults(*worker->result());
     }
     jobItem->setStatus(worker->status());
 
diff --git a/GUI/Support/Data/JobWorker.cpp b/GUI/Support/Data/JobWorker.cpp
index 453b7dd82d746e8e0d12c8adef3da0ec19c00424..219627695e68791dcd598fd0da5e9e4c296acab2 100644
--- a/GUI/Support/Data/JobWorker.cpp
+++ b/GUI/Support/Data/JobWorker.cpp
@@ -99,6 +99,11 @@ const QDateTime& JobWorker::simulationEnd() const
     return m_simulation_end;
 }
 
+const SimulationResult* JobWorker::result() const
+{
+    return m_result.get();
+}
+
 //! Sets request for JobRunner to terminate underlying domain simulation.
 
 void JobWorker::terminate()
diff --git a/GUI/Support/Data/JobWorker.h b/GUI/Support/Data/JobWorker.h
index bf0bb0f7e73fbceacca5e26c321b91a83b47c276..fc929fd8cdea23497e6bff343adaa392f7a216fd 100644
--- a/GUI/Support/Data/JobWorker.h
+++ b/GUI/Support/Data/JobWorker.h
@@ -42,6 +42,8 @@ public:
     const QDateTime& simulationStart() const;
     const QDateTime& simulationEnd() const;
 
+    const SimulationResult* result() const;
+
 signals:
     void started();
     void finished();