diff --git a/GUI/Model/Data/DataItem.cpp b/GUI/Model/Data/DataItem.cpp
index 0554b635bc2e3d5887c4cb16b49acfc6528249c3..e2a6db597f4ed3e4dbbf05046ad3a5bb86a86536 100644
--- a/GUI/Model/Data/DataItem.cpp
+++ b/GUI/Model/Data/DataItem.cpp
@@ -105,6 +105,14 @@ bool DataItem::isAxesUnitsPropertyName(const QString& name)
     return name == P_AXES_UNITS;
 }
 
+void DataItem::updateAxesUnits(SessionItem* item, const QString& name, InstrumentItem* instrumentItem)
+{
+    DataItem* dataItem = dynamic_cast<DataItem*>(item);
+    if (dataItem && isAxesUnitsPropertyName(name)) {
+        dataItem->updateCoords(instrumentItem);
+    }
+}
+
 DataItem::DataItem(const QString& modelType)
     : SessionItem(modelType)
 {
diff --git a/GUI/Model/Data/DataItem.h b/GUI/Model/Data/DataItem.h
index 1dc7ebf8cf3f09f513a9c40c6216e4eaf01e63b2..f5c3875a9003e47db528ae7214c63bb4b0f69183 100644
--- a/GUI/Model/Data/DataItem.h
+++ b/GUI/Model/Data/DataItem.h
@@ -63,6 +63,7 @@ public:
     SessionItem* getAxesUnitsItem() const;
     SelectionDescriptor<QString> axesUnits() const;
     static bool isAxesUnitsPropertyName(const QString& name);
+    static void updateAxesUnits(SessionItem* item, const QString& name, InstrumentItem* instrumentItem);
 
     virtual void setXaxisTitle(const QString& title) = 0;
     virtual void setYaxisTitle(const QString& title) = 0;
diff --git a/GUI/Model/Job/JobItem.cpp b/GUI/Model/Job/JobItem.cpp
index 3a71c8eb05326247920431499a2ae85e4b325163..789cf3278ee067e6dde03a0782bf782adfc6720d 100644
--- a/GUI/Model/Job/JobItem.cpp
+++ b/GUI/Model/Job/JobItem.cpp
@@ -63,12 +63,6 @@ JobItem::JobItem()
     registerTag(T_DATAVIEW, 1, 1, {Data1DViewItem::M_TYPE});
 
     registerTag(T_FIT_SUITE, 1, 1, {FitSuiteItem::M_TYPE});
-
-//    mapper()->setOnChildPropertyChange([this](SessionItem* item, const QString& name) {
-//        if (item->parent() == this && dynamic_cast<DataItem*>(item)
-//            && DataItem::isAxesUnitsPropertyName(name))
-//            dynamic_cast<DataItem*>(item)->updateCoords(instrumentItem());
-//    });
 }
 
 QString JobItem::getIdentifier() const
diff --git a/GUI/View/Plot2D/IntensityDataWidget.cpp b/GUI/View/Plot2D/IntensityDataWidget.cpp
index cdd24da65742dbd2a05688442c5b43cdf5289006..cefd52c4852e316756d4f07f909e9deac9b428f1 100644
--- a/GUI/View/Plot2D/IntensityDataWidget.cpp
+++ b/GUI/View/Plot2D/IntensityDataWidget.cpp
@@ -14,6 +14,8 @@
 
 #include "GUI/View/Plot2D/IntensityDataWidget.h"
 #include "GUI/Model/Data/IntensityDataItem.h"
+#include "GUI/Model/Job/JobItem.h"
+#include "GUI/Model/Data/RealDataItem.h"
 #include "GUI/Util/ActionFactory.h"
 #include "GUI/View/Plot2D/IntensityDataCanvas.h"
 #include "GUI/View/Plot2D/IntensityDataFFTPresenter.h"
diff --git a/GUI/View/PlotComparison/FitComparisonWidget.cpp b/GUI/View/PlotComparison/FitComparisonWidget.cpp
index c50f97a3f8eb4d91f94970b49b4804f5a9e4cb15..bec7ec149a1eaac12026a2908548c973d12b4fc3 100644
--- a/GUI/View/PlotComparison/FitComparisonWidget.cpp
+++ b/GUI/View/PlotComparison/FitComparisonWidget.cpp
@@ -107,7 +107,7 @@ void FitComparisonWidget::subscribeToItem()
     m_statusLabel->addPlot(m_simulatedDataPlot->colorMap());
     m_statusLabel->addPlot(m_relativeDiffPlot->colorMap());
 
-    m_propertyWidget->setItem(simulatedDataItem());
+    m_propertyWidget->setItem(simulatedDataItem(), realDataItem());
 }
 
 void FitComparisonWidget::unsubscribeFromItem()
diff --git a/GUI/View/PlotComparison/FitComparisonWidget1D.cpp b/GUI/View/PlotComparison/FitComparisonWidget1D.cpp
index f27491926c334f681ff5ae1fee58ab927fa9cb55..b012b937477fb4557da92212aea4341fbcd2d943 100644
--- a/GUI/View/PlotComparison/FitComparisonWidget1D.cpp
+++ b/GUI/View/PlotComparison/FitComparisonWidget1D.cpp
@@ -34,7 +34,7 @@ FitComparisonWidget1D::FitComparisonWidget1D(QWidget* parent)
     , m_diff_plot(new Plot1DCanvas)
     , m_fitFlowWidget(new FitFlowWidget)
     , m_statusLabel(new PlotStatusLabel(nullptr, this))
-    , m_propertyWidget(new SpecularDataPropertyWidget)
+    , m_propertyWidget(new SpecularDataPropertyWidget(this))
     , m_resetViewAction(new QAction(this))
     , m_comparisonController(new FitComparison1DViewController(this))
 {
diff --git a/GUI/View/PlotSpecular/SpecularDataWidget.cpp b/GUI/View/PlotSpecular/SpecularDataWidget.cpp
index 1e13794c2a055ed9ef5597c1e21e9a6655c1c1eb..a6b4b40aa90bdf86f4b49b6cb6601ca305d8e084 100644
--- a/GUI/View/PlotSpecular/SpecularDataWidget.cpp
+++ b/GUI/View/PlotSpecular/SpecularDataWidget.cpp
@@ -24,7 +24,7 @@
 SpecularDataWidget::SpecularDataWidget(QWidget* parent)
     : SessionItemWidget(parent)
     , m_intensity_canvas(new SpecularDataCanvas)
-    , m_propertyWidget(new SpecularDataPropertyWidget)
+    , m_propertyWidget(new SpecularDataPropertyWidget(this))
 {
     setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
     m_propertyWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::MinimumExpanding);
diff --git a/GUI/View/PlotUtil/IntensityDataPropertyWidget.cpp b/GUI/View/PlotUtil/IntensityDataPropertyWidget.cpp
index a63050dfb0dd77a58c35c1c50fe82ebf21344208..f795e79ec7be4777a426d54929fc81e02434e591 100644
--- a/GUI/View/PlotUtil/IntensityDataPropertyWidget.cpp
+++ b/GUI/View/PlotUtil/IntensityDataPropertyWidget.cpp
@@ -47,36 +47,24 @@ IntensityDataPropertyWidget::~IntensityDataPropertyWidget()
         m_item->mapper()->unsubscribe(this);
 }
 
-#include <QDebug>
-void IntensityDataPropertyWidget::setItem(IntensityDataItem* item)
+void IntensityDataPropertyWidget::setItem(IntensityDataItem* mainItem, IntensityDataItem* realItem)
 {
     if (m_item)
         m_item->mapper()->unsubscribe(this);
 
     GUI::Util::Layout::clearLayout(m_mainLayout);
     m_updaters.clear();
-    m_item = item;
+    m_item = mainItem;
 
-    if (!item)
+    if (!m_item)
         return;
 
-    QComboBox* axesUnitsCombo = createComboBox(item->axesUnits());
-    // Connection instead of using sessionItem mapper
-    connect(axesUnitsCombo, &QComboBox::currentTextChanged, this, [=](QString currentText) {
-        Q_UNUSED(currentText)
-        // It doesn't work for real data map and diff data map
-        // Also need to connect other intensity data items
-        if(jobItem())
-            item->updateCoords(jobItem()->instrumentItem());
-    });
-    qInfo() << "IntensityDataPropertyWidget : jobItem is" << jobItem() << endl;
-
-    m_mainLayout->addRow("Axes units:", axesUnitsCombo);
-    m_mainLayout->addRow("Color scheme:", createComboBox(item->gradient()));
+    m_mainLayout->addRow("Axes units:", createComboBox(m_item->axesUnits()));
+    m_mainLayout->addRow("Color scheme:", createComboBox(m_item->gradient()));
 
     m_mainLayout->addRow(createCheckBox(
-        "Interpolate", [=]() { return item->isInterpolated(); },
-        [=](bool b) { item->setInterpolated(b); }));
+        "Interpolate", [=]() { return m_item->isInterpolated(); },
+        [=](bool b) { m_item->setInterpolated(b); }));
 
     // -- x-axis
     auto* xGroup = new QGroupBox("X axis", this);
@@ -84,9 +72,9 @@ void IntensityDataPropertyWidget::setItem(IntensityDataItem* item)
     xFormLayout->setContentsMargins(0, 0, 0, 0);
     xFormLayout->setSpacing(5);
 
-    xFormLayout->addRow("Min:", createDoubleSpinbox(item->xAxisItem()->min()));
-    xFormLayout->addRow("Max:", createDoubleSpinbox(item->xAxisItem()->max()));
-    xFormLayout->addRow("Title:", createTextEdit(item->xAxisItem()->titleItem()));
+    xFormLayout->addRow("Min:", createDoubleSpinbox(m_item->xAxisItem()->min()));
+    xFormLayout->addRow("Max:", createDoubleSpinbox(m_item->xAxisItem()->max()));
+    xFormLayout->addRow("Title:", createTextEdit(m_item->xAxisItem()->titleItem()));
 
     m_mainLayout->addRow(xGroup);
 
@@ -96,9 +84,9 @@ void IntensityDataPropertyWidget::setItem(IntensityDataItem* item)
     yFormLayout->setContentsMargins(0, 0, 0, 0);
     yFormLayout->setSpacing(5);
 
-    yFormLayout->addRow("Min:", createDoubleSpinbox(item->yAxisItem()->min()));
-    yFormLayout->addRow("Max:", createDoubleSpinbox(item->yAxisItem()->max()));
-    yFormLayout->addRow("Title:", createTextEdit(item->yAxisItem()->titleItem()));
+    yFormLayout->addRow("Min:", createDoubleSpinbox(m_item->yAxisItem()->min()));
+    yFormLayout->addRow("Max:", createDoubleSpinbox(m_item->yAxisItem()->max()));
+    yFormLayout->addRow("Title:", createTextEdit(m_item->yAxisItem()->titleItem()));
 
     m_mainLayout->addRow(yGroup);
 
@@ -108,20 +96,27 @@ void IntensityDataPropertyWidget::setItem(IntensityDataItem* item)
     zFormLayout->setContentsMargins(0, 0, 0, 0);
     zFormLayout->setSpacing(5);
 
-    zFormLayout->addRow("Min:", createDoubleSpinbox(item->zAxisItem()->min()));
-    zFormLayout->addRow("Max:", createDoubleSpinbox(item->zAxisItem()->max()));
-    zFormLayout->addRow(createCheckBox("log10", item->zAxisItem()->logScaleItem()));
-    zFormLayout->addRow(createCheckBox("Visible", item->zAxisItem()->visibilityItem()));
+    zFormLayout->addRow("Min:", createDoubleSpinbox(m_item->zAxisItem()->min()));
+    zFormLayout->addRow("Max:", createDoubleSpinbox(m_item->zAxisItem()->max()));
+    zFormLayout->addRow(createCheckBox("log10", m_item->zAxisItem()->logScaleItem()));
+    zFormLayout->addRow(createCheckBox("Visible", m_item->zAxisItem()->visibilityItem()));
 
     m_mainLayout->addRow(zGroup);
 
     updateUIValues();
 
     // react on external changes (e.g. zooming in customplot shall update the axis values)
-    item->mapper()->setOnChildPropertyChange(
-        [=](SessionItem*, const QString&) { updateUIValues(); }, this);
+    m_item->mapper()->setOnChildPropertyChange([=](SessionItem*, const QString&) {
+        updateUIValues(); }, this);
+
+    // update coordinates on axes units change
+    m_item->mapper()->setOnPropertyChange([this](SessionItem* item, const QString& name) {
+        DataItem::updateAxesUnits(item, name, jobItem()->instrumentItem()); }, this);
+    if(realItem)
+        realItem->mapper()->setOnPropertyChange([this](SessionItem* item, const QString& name) {
+            DataItem::updateAxesUnits(item, name, jobItem()->instrumentItem()); }, this);
 
-    item->mapper()->setOnItemDestroy([this](SessionItem*) { m_item = nullptr; }, this);
+    m_item->mapper()->setOnItemDestroy([this](SessionItem*) { m_item = nullptr; }, this);
 }
 
 const JobItem* IntensityDataPropertyWidget::jobItem() const
@@ -130,7 +125,7 @@ const JobItem* IntensityDataPropertyWidget::jobItem() const
     if(!sessionItemWidget)
         return nullptr;
 
-   return dynamic_cast<JobItem*>(sessionItemWidget->currentItem());
+    return dynamic_cast<JobItem*>(sessionItemWidget->currentItem());
 }
 
 QWidget* IntensityDataPropertyWidget::createDoubleSpinbox(DoubleDescriptor d)
@@ -175,7 +170,7 @@ QWidget* IntensityDataPropertyWidget::createCheckBox(const QString& title, funct
     return checkBox;
 }
 
-QComboBox* IntensityDataPropertyWidget::createComboBox(SelectionDescriptor<QString> d)
+QWidget* IntensityDataPropertyWidget::createComboBox(SelectionDescriptor<QString> d)
 {
     auto* combo = new QComboBox(this);
     combo->addItems(d.options);
diff --git a/GUI/View/PlotUtil/IntensityDataPropertyWidget.h b/GUI/View/PlotUtil/IntensityDataPropertyWidget.h
index fb5fca9a7d65d4c5645a9fabd9a5f91987d8e9aa..47bdaf24876346d9f701c56eacba8080f8c415c7 100644
--- a/GUI/View/PlotUtil/IntensityDataPropertyWidget.h
+++ b/GUI/View/PlotUtil/IntensityDataPropertyWidget.h
@@ -36,7 +36,7 @@ public:
     explicit IntensityDataPropertyWidget(QWidget* parent = nullptr);
     ~IntensityDataPropertyWidget();
 
-    void setItem(IntensityDataItem* item);
+    void setItem(IntensityDataItem* mainItem, IntensityDataItem* realItem = nullptr);
     const JobItem* jobItem() const;
 
 private:
@@ -45,7 +45,7 @@ private:
     QWidget* createCheckBox(const QString& title, SessionItem* item);
     QWidget* createCheckBox(const QString& title, function<bool()> getter,
                             function<void(bool)> setter);
-    QComboBox* createComboBox(SelectionDescriptor<QString> d);
+    QWidget* createComboBox(SelectionDescriptor<QString> d);
 
     void updateUIValues();
 
diff --git a/GUI/View/PropertyEditor/SpecularDataPropertyWidget.cpp b/GUI/View/PropertyEditor/SpecularDataPropertyWidget.cpp
index f39236e28949d83f22cefb71b59f90dabea3fd03..792b24d7864a4a8faeba25aec6fe72b9acfd3c21 100644
--- a/GUI/View/PropertyEditor/SpecularDataPropertyWidget.cpp
+++ b/GUI/View/PropertyEditor/SpecularDataPropertyWidget.cpp
@@ -13,6 +13,8 @@
 //  ************************************************************************************************
 
 #include "GUI/View/PropertyEditor/SpecularDataPropertyWidget.h"
+#include "GUI/View/Common/SessionItemWidget.h"
+#include "GUI/Model/Job/JobItem.h"
 #include "GUI/Model/Data/Data1DViewItem.h"
 #include "GUI/Model/Data/SpecularDataItem.h"
 #include "GUI/Model/Device/AxesItems.h"
@@ -28,6 +30,7 @@
 
 SpecularDataPropertyWidget::SpecularDataPropertyWidget(QWidget* parent)
     : QWidget(parent)
+    , parent(parent)
     , m_item(nullptr)
 {
     setWindowTitle("Properties");
@@ -49,6 +52,15 @@ void SpecularDataPropertyWidget::setItem(Data1DViewItem* item)
     setCurrentItem(item);
 }
 
+const JobItem* SpecularDataPropertyWidget::jobItem() const
+{
+    SessionItemWidget* sessionItemWidget = dynamic_cast<SessionItemWidget*>(parent);
+    if(!sessionItemWidget)
+        return nullptr;
+
+    return dynamic_cast<JobItem*>(sessionItemWidget->currentItem());
+}
+
 void SpecularDataPropertyWidget::setCurrentItem(SessionItem* item)
 {
     if (m_item)
@@ -105,8 +117,12 @@ void SpecularDataPropertyWidget::setCurrentItem(SessionItem* item)
     updateUIValues();
 
     // react on external changes (e.g. zooming in customplot shall update the axis values)
-    m_item->mapper()->setOnChildPropertyChange(
-        [=](SessionItem*, const QString&) { updateUIValues(); }, this);
+    m_item->mapper()->setOnChildPropertyChange([=](SessionItem*, const QString&) {
+        updateUIValues(); }, this);
+
+    // update coordinates on axes units change
+    m_item->mapper()->setOnPropertyChange([this](SessionItem* item, const QString& name) {
+        DataItem::updateAxesUnits(item, name, jobItem()->instrumentItem()); }, this);
 }
 
 QWidget* SpecularDataPropertyWidget::createDoubleSpinbox(DoubleDescriptor d)
diff --git a/GUI/View/PropertyEditor/SpecularDataPropertyWidget.h b/GUI/View/PropertyEditor/SpecularDataPropertyWidget.h
index f3979a0ed0280f0b00209a40ff7aec9d6ff0bbb8..9e764592c9a2bb9ffc0ee9cd36c14a770f8bc022 100644
--- a/GUI/View/PropertyEditor/SpecularDataPropertyWidget.h
+++ b/GUI/View/PropertyEditor/SpecularDataPropertyWidget.h
@@ -26,6 +26,7 @@ class SessionItem;
 class QFormLayout;
 class DoubleDescriptor;
 class Data1DViewItem;
+class JobItem;
 
 using std::function;
 
@@ -38,6 +39,7 @@ public:
 
     void setItem(SpecularDataItem* item);
     void setItem(Data1DViewItem* item);
+    const JobItem* jobItem() const;
 
 private:
     QWidget* createDoubleSpinbox(DoubleDescriptor d);
@@ -51,6 +53,7 @@ private:
     void setCurrentItem(SessionItem* item);
 
 private:
+    QWidget* parent;
     SessionItem* m_item;
     QFormLayout* m_mainLayout;
     QList<function<void()>> m_updaters;