diff --git a/GUI/coregui/Models/DomainObjectBuilder.cpp b/GUI/coregui/Models/DomainObjectBuilder.cpp
index a405c1ca4c1ba1a24b750abb77bbc3b08659f45d..91d121a80f0db80e238bb9b0ac300fc7d2c1f69d 100644
--- a/GUI/coregui/Models/DomainObjectBuilder.cpp
+++ b/GUI/coregui/Models/DomainObjectBuilder.cpp
@@ -134,19 +134,15 @@ DomainObjectBuilder::buildInstrument(const InstrumentItem& instrumentItem)
 std::unique_ptr<IUnitConverter>
 DomainObjectBuilder::createUnitConverter(const InstrumentItem* instrumentItem)
 {
+    if (auto specular_instrument = dynamic_cast<const SpecularInstrumentItem*>(instrumentItem))
+        return specular_instrument->createUnitConverter();
+
     const auto instrument = instrumentItem->createInstrument();
     instrument->initDetector();
 
     if (instrumentItem->modelType() == Constants::GISASInstrumentType)
         return UnitConverterUtils::createConverterForGISAS(*instrument);
 
-    if (auto specular_instrument = dynamic_cast<const SpecularInstrumentItem*>(instrumentItem))
-    {
-        auto axis_item = specular_instrument->beamItem()->currentInclinationAxisItem();
-        return std::make_unique<UnitConverter1D>(instrument->getBeam(),
-                                                 *axis_item->createAxis(Units::degree));
-    }
-
     if (instrumentItem->modelType() == Constants::OffSpecInstrumentType) {
         auto axis_item = dynamic_cast<BasicAxisItem*>(
             instrumentItem->getItem(OffSpecInstrumentItem::P_ALPHA_AXIS));
diff --git a/GUI/coregui/Models/InstrumentItems.cpp b/GUI/coregui/Models/InstrumentItems.cpp
index 7cadb7d0959b275a1e0f5867224292a2f7d98855..cc42ecd02913c5b9745890b01827838dcb9f3bfb 100644
--- a/GUI/coregui/Models/InstrumentItems.cpp
+++ b/GUI/coregui/Models/InstrumentItems.cpp
@@ -22,6 +22,7 @@
 #include "IDetector2D.h"
 #include "Instrument.h"
 #include "ItemFileNameUtils.h"
+#include "UnitConverter1D.h"
 #include "MaskItems.h"
 #include "SessionModel.h"
 
@@ -126,6 +127,14 @@ void SpecularInstrumentItem::setShape(const std::vector<int>& data_shape)
     axis_item->setItemValue(BasicAxisItem::P_NBINS, data_shape[0]);
 }
 
+std::unique_ptr<IUnitConverter> SpecularInstrumentItem::createUnitConverter() const
+{
+    const auto instrument = createInstrument();
+    auto axis_item = beamItem()->currentInclinationAxisItem();
+    return std::make_unique<UnitConverter1D>(instrument->getBeam(),
+                                             *axis_item->createAxis(1.0), AxesUnits::DEGREES);
+}
+
 const QString Instrument2DItem::P_DETECTOR = "Detector";
 
 Instrument2DItem::Instrument2DItem(const QString& modelType)
diff --git a/GUI/coregui/Models/InstrumentItems.h b/GUI/coregui/Models/InstrumentItems.h
index fa177c4ab51d6ab4cccd5a5ebaab9b71275489e0..600328cf20b3697ca003ab35d352d4184d06d56f 100644
--- a/GUI/coregui/Models/InstrumentItems.h
+++ b/GUI/coregui/Models/InstrumentItems.h
@@ -22,6 +22,7 @@ class DataItem;
 class DetectorItem;
 class GroupItem;
 class Instrument;
+class IUnitConverter;
 class MaskContainerItem;
 
 class BA_CORE_API_ InstrumentItem : public SessionItem
@@ -60,6 +61,8 @@ public:
     std::unique_ptr<Instrument> createInstrument() const override;
     std::vector<int> shape() const override;
     void setShape(const std::vector<int>& shape) override;
+
+    std::unique_ptr<IUnitConverter> createUnitConverter() const;
 };
 
 class BA_CORE_API_ Instrument2DItem : public InstrumentItem