diff --git a/GUI/Model/Data/MaskResultsPresenter.cpp b/GUI/Model/Data/MaskResultsPresenter.cpp
index 2818e7611bc52e6de057b1fcd229e1e55048499e..180a94422096f0a05609e6e01759accb089f4e25 100644
--- a/GUI/Model/Data/MaskResultsPresenter.cpp
+++ b/GUI/Model/Data/MaskResultsPresenter.cpp
@@ -31,14 +31,13 @@ Datafield* createMaskPresentation(Data2DItem* data2DItem)
     std::unique_ptr<IShape2D> roi;
     Datafield* result = data2DItem->c_field()->clone();
     MaskStack detectorMask;
-    const double scale = 1.0;
     const QVector<MaskItem*> maskItems = data2DItem->maskContainerItem()->maskItems();
     for (auto maskIter = maskItems.rbegin(); maskIter != maskItems.rend(); maskIter++)
         if ((*maskIter)->isVisible()) {
             if (auto* roiItem = dynamic_cast<RegionOfInterestItem*>((*maskIter)))
-                roi = roiItem->createShape(scale);
+                roi = roiItem->createShape();
             else {
-                std::unique_ptr<IShape2D> shape((*maskIter)->createShape(scale));
+                std::unique_ptr<IShape2D> shape((*maskIter)->createShape());
                 detectorMask.maskToStack(*shape, (*maskIter)->maskValue(), true);
             }
         }
diff --git a/GUI/Model/Detector/DetectorItem.cpp b/GUI/Model/Detector/DetectorItem.cpp
index b66ec825052c0ed06b5aded8d2420360b8840028..35e257a4f7f3e2f6bee16e9d214603717f5a9f41 100644
--- a/GUI/Model/Detector/DetectorItem.cpp
+++ b/GUI/Model/Detector/DetectorItem.cpp
@@ -94,24 +94,22 @@ SelectionProperty<ResolutionFunctionItemCatalog>& DetectorItem::resolutionFuncti
 
 std::unique_ptr<IResolutionFunction2D> DetectorItem::createResolutionFunction() const
 {
-    return m_resolutionFunction->createResolutionFunction(axesToCoreUnitsFactor());
+    return m_resolutionFunction->createResolutionFunction();
 }
 
 void DetectorItem::addMasksToCore(IDetector* detector) const
 {
-    const double scale = axesToCoreUnitsFactor();
-    ASSERT(scale == 1); // TODO remove either this or the above
     const QVector<MaskItem*> maskItems = m_maskContainerItem.maskItems();
     for (auto maskIter = maskItems.rbegin(); maskIter != maskItems.rend(); maskIter++)
         if ((*maskIter)->isVisible()) {
             if (auto* roiItem = dynamic_cast<RegionOfInterestItem*>(*maskIter)) {
-                const double xlow = scale * roiItem->xLow();
-                const double ylow = scale * roiItem->yLow();
-                const double xup = scale * roiItem->xUp();
-                const double yup = scale * roiItem->yUp();
+                const double xlow = roiItem->xLow();
+                const double ylow = roiItem->yLow();
+                const double xup = roiItem->xUp();
+                const double yup = roiItem->yUp();
                 detector->setRegionOfInterest(xlow, ylow, xup, yup);
             } else {
-                std::unique_ptr<IShape2D> shape((*maskIter)->createShape(scale));
+                std::unique_ptr<IShape2D> shape((*maskIter)->createShape());
                 detector->addBinMask(*shape, (*maskIter)->maskValue());
             }
         }
diff --git a/GUI/Model/Detector/DetectorItem.h b/GUI/Model/Detector/DetectorItem.h
index 19c9bce6faaf99f2fc37b9ffcd67dc871e9e546d..b29330cca762e130c194da5aeaed22cd768965a0 100644
--- a/GUI/Model/Detector/DetectorItem.h
+++ b/GUI/Model/Detector/DetectorItem.h
@@ -40,9 +40,6 @@ public:
     template <typename T>
     T* setResolutionFunctionType();
 
-    //! Scales the values provided by axes (to perform deg->rad conversion on the way to domain).
-    double axesToCoreUnitsFactor() const { return 1.0; } // TODO rm
-
     void writeTo(QXmlStreamWriter* w) const;
     void readFrom(QXmlStreamReader* r);
 
diff --git a/GUI/Model/Detector/ResolutionFunctionItems.cpp b/GUI/Model/Detector/ResolutionFunctionItems.cpp
index f6d056ba5168401930e569511cd52b093ba302e9..a3df0f7a8642f133599a1140961d3bb470b69b82 100644
--- a/GUI/Model/Detector/ResolutionFunctionItems.cpp
+++ b/GUI/Model/Detector/ResolutionFunctionItems.cpp
@@ -25,8 +25,7 @@ const QString SigmaY("SigmaY");
 } // namespace Tag
 } // namespace
 
-std::unique_ptr<IResolutionFunction2D>
-ResolutionFunctionNoneItem::createResolutionFunction(double) const
+std::unique_ptr<IResolutionFunction2D> ResolutionFunctionNoneItem::createResolutionFunction() const
 {
     return {};
 }
@@ -40,9 +39,9 @@ ResolutionFunction2DGaussianItem::ResolutionFunction2DGaussianItem()
 }
 
 std::unique_ptr<IResolutionFunction2D>
-ResolutionFunction2DGaussianItem::createResolutionFunction(double scale) const
+ResolutionFunction2DGaussianItem::createResolutionFunction() const
 {
-    return std::make_unique<ResolutionFunction2DGaussian>(scale * m_sigmaX, scale * m_sigmaY);
+    return std::make_unique<ResolutionFunction2DGaussian>(m_sigmaX, m_sigmaY);
 }
 
 void ResolutionFunction2DGaussianItem::writeTo(QXmlStreamWriter* w) const
diff --git a/GUI/Model/Detector/ResolutionFunctionItems.h b/GUI/Model/Detector/ResolutionFunctionItems.h
index 22665e1f20f07e53e0b7d4a4aae60270bec18553..73861b3e034b73c417aa1c619dfea37cb6f9b500 100644
--- a/GUI/Model/Detector/ResolutionFunctionItems.h
+++ b/GUI/Model/Detector/ResolutionFunctionItems.h
@@ -24,8 +24,7 @@ class ResolutionFunctionItem {
 public:
     virtual ~ResolutionFunctionItem() = default;
 
-    virtual std::unique_ptr<IResolutionFunction2D>
-    createResolutionFunction(double scale = 1.0) const = 0;
+    virtual std::unique_ptr<IResolutionFunction2D> createResolutionFunction() const = 0;
 
     virtual void writeTo(QXmlStreamWriter*) const {}
     virtual void readFrom(QXmlStreamReader*) {}
@@ -33,15 +32,13 @@ public:
 
 class ResolutionFunctionNoneItem : public ResolutionFunctionItem {
 public:
-    std::unique_ptr<IResolutionFunction2D>
-    createResolutionFunction(double scale = 1.0) const override;
+    std::unique_ptr<IResolutionFunction2D> createResolutionFunction() const override;
 };
 
 class ResolutionFunction2DGaussianItem : public ResolutionFunctionItem {
 public:
     ResolutionFunction2DGaussianItem();
-    std::unique_ptr<IResolutionFunction2D>
-    createResolutionFunction(double scale = 1.0) const override;
+    std::unique_ptr<IResolutionFunction2D> createResolutionFunction() const override;
 
     void writeTo(QXmlStreamWriter* w) const override;
     void readFrom(QXmlStreamReader* r) override;
diff --git a/GUI/Model/FromCore/ItemizeSimulation.cpp b/GUI/Model/FromCore/ItemizeSimulation.cpp
index 44d679e6c99967e908e49ad447cce4cb299f2e97..9da36b2b907ef999bab889bb4b257a6f1960d5f4 100644
--- a/GUI/Model/FromCore/ItemizeSimulation.cpp
+++ b/GUI/Model/FromCore/ItemizeSimulation.cpp
@@ -50,7 +50,7 @@
 
 namespace {
 
-void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detector, double scale)
+void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detector)
 {
     const auto* detectorMask = detector.detectorMask();
     for (size_t i_mask = 0; i_mask < detectorMask->numberOfMasks(); ++i_mask) {
@@ -60,11 +60,11 @@ void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detecto
 
         if (const auto* ellipse = dynamic_cast<const Ellipse*>(shape)) {
             auto* ellipseItem = new EllipseItem();
-            ellipseItem->setXCenter(scale * ellipse->getCenterX());
-            ellipseItem->setYCenter(scale * ellipse->getCenterY());
-            ellipseItem->setXRadius(scale * ellipse->radiusX());
-            ellipseItem->setYRadius(scale * ellipse->radiusY());
-            ellipseItem->setAngle(scale * ellipse->getTheta());
+            ellipseItem->setXCenter(ellipse->getCenterX());
+            ellipseItem->setYCenter(ellipse->getCenterY());
+            ellipseItem->setXRadius(ellipse->radiusX());
+            ellipseItem->setYRadius(ellipse->radiusY());
+            ellipseItem->setAngle(ellipse->getTheta());
             ellipseItem->setMaskValue(mask_value);
             // TODO: why prepend the mask, instead of appending it?
             destMaskItems->insertMask(0, ellipseItem);
@@ -72,10 +72,10 @@ void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detecto
 
         else if (const auto* rectangle = dynamic_cast<const Rectangle*>(shape)) {
             auto* rectangleItem = new RectangleItem();
-            rectangleItem->setXLow(scale * rectangle->getXlow());
-            rectangleItem->setYLow(scale * rectangle->getYlow());
-            rectangleItem->setXUp(scale * rectangle->getXup());
-            rectangleItem->setYUp(scale * rectangle->getYup());
+            rectangleItem->setXLow(rectangle->getXlow());
+            rectangleItem->setYLow(rectangle->getYlow());
+            rectangleItem->setXUp(rectangle->getXup());
+            rectangleItem->setYUp(rectangle->getYup());
             rectangleItem->setMaskValue(mask_value);
             // TODO: why prepend the mask, instead of appending it?
             destMaskItems->insertMask(0, rectangleItem);
@@ -86,7 +86,7 @@ void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detecto
             std::vector<double> xpos, ypos;
             polygon->getPoints(xpos, ypos);
             for (size_t i_point = 0; i_point < xpos.size(); ++i_point)
-                polygonItem->addPoint(scale * xpos[i_point], scale * ypos[i_point]);
+                polygonItem->addPoint(xpos[i_point], ypos[i_point]);
 
             polygonItem->setMaskValue(mask_value);
             polygonItem->setIsClosed(true);
@@ -96,7 +96,7 @@ void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detecto
 
         else if (const auto* vline = dynamic_cast<const VerticalLine*>(shape)) {
             auto* lineItem = new VerticalLineItem();
-            lineItem->setPosX(scale * vline->getXpos());
+            lineItem->setPosX(vline->getXpos());
             lineItem->setMaskValue(mask_value);
             // TODO: why prepend the mask, instead of appending it?
             destMaskItems->insertMask(0, lineItem);
@@ -104,7 +104,7 @@ void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detecto
 
         else if (const auto* hline = dynamic_cast<const HorizontalLine*>(shape)) {
             auto* lineItem = new HorizontalLineItem();
-            lineItem->setPosY(scale * hline->getYpos());
+            lineItem->setPosY(hline->getYpos());
             lineItem->setMaskValue(mask_value);
             // TODO: why prepend the mask, instead of appending it?
             destMaskItems->insertMask(0, lineItem);
@@ -126,10 +126,10 @@ void setMaskContainer(MaskContainerItem* destMaskItems, const IDetector& detecto
         const auto yBounds = detector.regionOfInterestBounds(1);
 
         auto* roiItem = new RegionOfInterestItem();
-        roiItem->setXLow(scale * xBounds.first);
-        roiItem->setYLow(scale * yBounds.first);
-        roiItem->setXUp(scale * xBounds.second);
-        roiItem->setYUp(scale * yBounds.second);
+        roiItem->setXLow(xBounds.first);
+        roiItem->setYLow(yBounds.first);
+        roiItem->setXUp(xBounds.second);
+        roiItem->setYUp(yBounds.second);
         destMaskItems->addMaskItem(roiItem);
     }
 }
@@ -138,8 +138,7 @@ void setMaskStacks(DetectorItem* detector_item, const IDetector& detector)
 {
     if ((detector.detectorMask() && detector.detectorMask()->hasMasks())
         || detector.hasExplicitRegionOfInterest()) {
-        const double scale = 1.0 / detector_item->axesToCoreUnitsFactor();
-        setMaskContainer(&detector_item->maskItems(), detector, scale);
+        setMaskContainer(&detector_item->maskItems(), detector);
     }
 }
 
@@ -235,9 +234,8 @@ void setDetectorResolution(DetectorItem* detector_item, const IDetector& detecto
                 convfunc->getResolutionFunction2D())) {
             auto* item =
                 detector_item->setResolutionFunctionType<ResolutionFunction2DGaussianItem>();
-            const double scale = 1.0 / detector_item->axesToCoreUnitsFactor();
-            item->setSigmaX(scale * resfunc->sigmaX());
-            item->setSigmaY(scale * resfunc->sigmaY());
+            item->setSigmaX(resfunc->sigmaX());
+            item->setSigmaY(resfunc->sigmaY());
         } else
             ASSERT_NEVER;
     } else
diff --git a/GUI/Model/Mask/MaskItems.cpp b/GUI/Model/Mask/MaskItems.cpp
index bcb8a4eceecee6b9874580e5164cd356108ad7b6..b334466a76b1fb99ebc4f5b538e0b979fcc57232 100644
--- a/GUI/Model/Mask/MaskItems.cpp
+++ b/GUI/Model/Mask/MaskItems.cpp
@@ -139,12 +139,12 @@ RectangleItem::RectangleItem()
     setMaskName("RectangleMask");
 }
 
-std::unique_ptr<IShape2D> RectangleItem::createShape(double scale) const
+std::unique_ptr<IShape2D> RectangleItem::createShape() const
 {
-    double xlow = scale * xLow();
-    double ylow = scale * yLow();
-    double xup = scale * xUp();
-    double yup = scale * yUp();
+    double xlow = xLow();
+    double ylow = yLow();
+    double xup = xUp();
+    double yup = yUp();
     return std::make_unique<Rectangle>(xlow, ylow, xup, yup);
 }
 
@@ -269,9 +269,9 @@ RegionOfInterestItem::RegionOfInterestItem()
     setMaskValue(false);
 }
 
-std::unique_ptr<IShape2D> RegionOfInterestItem::createShape(double scale) const
+std::unique_ptr<IShape2D> RegionOfInterestItem::createShape() const
 {
-    auto shape = RectangleItem::createShape(scale);
+    auto shape = RectangleItem::createShape();
     dynamic_cast<Rectangle*>(shape.get())->setInverted(true);
     return shape;
 }
@@ -334,12 +334,12 @@ PolygonItem::PolygonItem()
     setMaskName("PolygonMask");
 }
 
-std::unique_ptr<IShape2D> PolygonItem::createShape(double scale) const
+std::unique_ptr<IShape2D> PolygonItem::createShape() const
 {
     std::vector<double> x, y;
     for (PolygonPointItem* item : m_points) {
-        x.push_back(scale * item->posX());
-        y.push_back(scale * item->posY());
+        x.push_back(item->posX());
+        y.push_back(item->posY());
     }
     return std::make_unique<Polygon>(x, y);
 }
@@ -430,9 +430,9 @@ VerticalLineItem::VerticalLineItem()
     setMaskName("VerticalLineMask");
 }
 
-std::unique_ptr<IShape2D> VerticalLineItem::createShape(double scale) const
+std::unique_ptr<IShape2D> VerticalLineItem::createShape() const
 {
-    return std::make_unique<VerticalLine>(scale * posX());
+    return std::make_unique<VerticalLine>(posX());
 }
 
 double VerticalLineItem::posX() const
@@ -492,9 +492,9 @@ HorizontalLineItem::HorizontalLineItem()
     setMaskName("HorizontalLineMask");
 }
 
-std::unique_ptr<IShape2D> HorizontalLineItem::createShape(double scale) const
+std::unique_ptr<IShape2D> HorizontalLineItem::createShape() const
 {
-    return std::make_unique<HorizontalLine>(scale * posY());
+    return std::make_unique<HorizontalLine>(posY());
 }
 
 double HorizontalLineItem::posY() const
@@ -554,13 +554,13 @@ EllipseItem::EllipseItem()
     setMaskName("EllipseMask");
 }
 
-std::unique_ptr<IShape2D> EllipseItem::createShape(double scale) const
+std::unique_ptr<IShape2D> EllipseItem::createShape() const
 {
-    double xcenter = scale * xCenter();
-    double ycenter = scale * yCenter();
-    double xradius = scale * xRadius();
-    double yradius = scale * yRadius();
-    double _angle = scale * angle();
+    double xcenter = xCenter();
+    double ycenter = yCenter();
+    double xradius = xRadius();
+    double yradius = yRadius();
+    double _angle = angle();
 
     return std::make_unique<Ellipse>(xcenter, ycenter, xradius, yradius, _angle);
 }
@@ -706,7 +706,7 @@ MaskAllItem::MaskAllItem()
     setMaskName("MaskAllMask");
 }
 
-std::unique_ptr<IShape2D> MaskAllItem::createShape(double) const
+std::unique_ptr<IShape2D> MaskAllItem::createShape() const
 {
     return std::make_unique<InfinitePlane>();
 }
diff --git a/GUI/Model/Mask/MaskItems.h b/GUI/Model/Mask/MaskItems.h
index 9accce16e6e170a1fbd0022860bc24ef26ac78e5..f03e2b5c3f544753ebc8f8775ad6f6d76837a5f4 100644
--- a/GUI/Model/Mask/MaskItems.h
+++ b/GUI/Model/Mask/MaskItems.h
@@ -27,7 +27,7 @@ class MaskItem : public MaskRoot {
 public:
     virtual ~MaskItem();
 
-    virtual std::unique_ptr<IShape2D> createShape(double scale) const = 0;
+    virtual std::unique_ptr<IShape2D> createShape() const = 0;
 
     QString maskName() const;
     void setMaskName(const QString& name);
@@ -55,7 +55,7 @@ protected:
 class RectangleItem : public MaskItem {
 public:
     explicit RectangleItem();
-    std::unique_ptr<IShape2D> createShape(double scale) const override;
+    std::unique_ptr<IShape2D> createShape() const override;
 
     double xLow() const;
     void setXLow(double val);
@@ -82,7 +82,7 @@ private:
 class RegionOfInterestItem : public RectangleItem {
 public:
     RegionOfInterestItem();
-    std::unique_ptr<IShape2D> createShape(double scale) const override;
+    std::unique_ptr<IShape2D> createShape() const override;
 };
 
 class PolygonPointItem : public MaskRoot {
@@ -107,7 +107,7 @@ private:
 class PolygonItem : public MaskItem {
 public:
     PolygonItem();
-    std::unique_ptr<IShape2D> createShape(double scale) const override;
+    std::unique_ptr<IShape2D> createShape() const override;
 
     bool isClosed() const;
     void setIsClosed(bool closed);
@@ -126,7 +126,7 @@ private:
 class VerticalLineItem : public MaskItem {
 public:
     VerticalLineItem();
-    std::unique_ptr<IShape2D> createShape(double scale) const override;
+    std::unique_ptr<IShape2D> createShape() const override;
 
     double posX() const;
     void setPosX(double val);
@@ -141,7 +141,7 @@ private:
 class HorizontalLineItem : public MaskItem {
 public:
     HorizontalLineItem();
-    std::unique_ptr<IShape2D> createShape(double scale) const override;
+    std::unique_ptr<IShape2D> createShape() const override;
 
     double posY() const;
     void setPosY(double pos_y);
@@ -156,7 +156,7 @@ private:
 class EllipseItem : public MaskItem {
 public:
     EllipseItem();
-    std::unique_ptr<IShape2D> createShape(double scale) const override;
+    std::unique_ptr<IShape2D> createShape() const override;
 
     double xCenter() const;
     void setXCenter(double val);
@@ -187,7 +187,7 @@ private:
 class MaskAllItem : public MaskItem {
 public:
     MaskAllItem();
-    std::unique_ptr<IShape2D> createShape(double scale) const override;
+    std::unique_ptr<IShape2D> createShape() const override;
 };
 
 #endif // BORNAGAIN_GUI_MODEL_MASK_MASKITEMS_H