diff --git a/GUI/Model/Data/Data2DItem.cpp b/GUI/Model/Data/Data2DItem.cpp
index c1ae3c7a6100d1cd0096df406e7820d53fe6d9cd..2d7803c37b4ef97b68a136b325a5a8c6bd72d2d2 100644
--- a/GUI/Model/Data/Data2DItem.cpp
+++ b/GUI/Model/Data/Data2DItem.cpp
@@ -365,7 +365,7 @@ Datafield* Data2DItem::createMaskedField() const
     std::unique_ptr<IShape2D> roi;
     Datafield* result = c_field()->clone();
     MaskStack detectorMask;
-    const auto& maskItems = masksSet()->maskItemsQ();
+    const auto& maskItems = masksSet()->maskItems();
 
     // reverse loop (waiting for C++ ranges)
     for (auto maskIter = maskItems.crbegin(); maskIter != maskItems.crend(); maskIter++) {
diff --git a/GUI/Model/Detector/DetectorItem.cpp b/GUI/Model/Detector/DetectorItem.cpp
index d96c15e1fdb2ee97bed484b9f024987d09e8fe7a..7ffedbacd053d653859391c5f74c48eefdcbd408 100644
--- a/GUI/Model/Detector/DetectorItem.cpp
+++ b/GUI/Model/Detector/DetectorItem.cpp
@@ -68,7 +68,7 @@ std::unique_ptr<IDetector> DetectorItem::createDetector() const
     auto result = std::make_unique<Detector2D>(x_wid, y_wid, n_x, n_y, x_cen, y_cen);
 
     if (m_masks) {
-        const auto& maskItems = m_masks->maskItemsQ();
+        const auto& maskItems = m_masks->maskItems();
 
         // reverse loop (waiting for C++ ranges)
         for (auto maskIter = maskItems.crbegin(); maskIter != maskItems.crend(); maskIter++) {
diff --git a/GUI/Model/Job/JobItem.cpp b/GUI/Model/Job/JobItem.cpp
index ff0f8072a220676db75498465f74145f4140499f..92d1b125ebf7ebbe67ad48ebe4bb383667d40a68 100644
--- a/GUI/Model/Job/JobItem.cpp
+++ b/GUI/Model/Job/JobItem.cpp
@@ -228,7 +228,7 @@ void JobItem::convertMaskCoords()
     // then from bins to target coords.
     // If 'IDetector::addBinMask' is used by detector, only "orig coords --> bins" is needed.
     if (const auto* container = m_dfile_item->data2DItem()->masksSet())
-        for (auto* maskItem : container->maskItemsQ())
+        for (auto* maskItem : container->maskItems())
             mask_converter.convertToNbins(maskItem);
 }
 
diff --git a/GUI/Model/Mask/MasksSet.cpp b/GUI/Model/Mask/MasksSet.cpp
index 3ea98dc1068fd5f5afedf185c3326fe2a327c482..0ee6d6ea2cfdea4387f00b236461a12784d4f66e 100644
--- a/GUI/Model/Mask/MasksSet.cpp
+++ b/GUI/Model/Mask/MasksSet.cpp
@@ -27,17 +27,8 @@ const QString Mask("Mask");
 } // namespace
 
 MasksSet::MasksSet() = default;
-
 MasksSet::~MasksSet() = default;
 
-QVector<MaskItem*> MasksSet::maskItemsQ() const
-{
-    QVector<MaskItem*> ret;
-    for (MaskItem* t : m_mask_items)
-        ret << t;
-    return ret;
-}
-
 void MasksSet::insertMask(int row, MaskItem* maskItem)
 {
     // takes owning of maskItem!
diff --git a/GUI/Model/Mask/MasksSet.h b/GUI/Model/Mask/MasksSet.h
index 7d33acdc4a0e33d08e6a45c12c7333e6d96bf38f..93da9cf90d4a2b11113199fbb8d13f5cc2bc5f23 100644
--- a/GUI/Model/Mask/MasksSet.h
+++ b/GUI/Model/Mask/MasksSet.h
@@ -32,7 +32,7 @@ public:
     MasksSet();
     virtual ~MasksSet();
 
-    QVector<MaskItem*> maskItemsQ() const;
+    const std::vector<MaskItem*>& maskItems() const { return m_mask_items.shared(); }
 
     //! Insert mask at given row.
     void insertMask(int row, MaskItem* maskItem);
diff --git a/GUI/View/Canvas/MaskEditorCanvas.cpp b/GUI/View/Canvas/MaskEditorCanvas.cpp
index 00067c0a25277547bd220a895eb5ca1407e5c956..fc8d6a057f338bdb60ddc31e5110ed3c209f317f 100644
--- a/GUI/View/Canvas/MaskEditorCanvas.cpp
+++ b/GUI/View/Canvas/MaskEditorCanvas.cpp
@@ -121,8 +121,8 @@ void MaskEditorCanvas::onPresentationChange(bool pixelized)
     }
 
     if (auto* container = m_data_item->masksSet())
-        for (MaskItem* mask : container->maskItemsQ())
-            mask->setIsVisible(!pixelized && mask->wasVisible());
+        for (MaskItem* t : container->maskItems())
+            t->setIsVisible(!pixelized && t->wasVisible());
 }
 
 //! Saves plot into project directory.
diff --git a/GUI/View/Scene/MaskGraphicsScene.cpp b/GUI/View/Scene/MaskGraphicsScene.cpp
index 319bac59272493a3a8eec4679ee5ba92ce3af343..7d86ad758aceb321f8084a9faf420d107605758b 100644
--- a/GUI/View/Scene/MaskGraphicsScene.cpp
+++ b/GUI/View/Scene/MaskGraphicsScene.cpp
@@ -310,7 +310,7 @@ void MaskGraphicsScene::updateScene()
 
     // update Z-values of all IMaskView to reflect stacking order
     int z = m_masks_qmodel->masksSet()->size();
-    for (const MaskItem* maskItem : m_masks_qmodel->masksSet()->maskItemsQ()) {
+    for (const MaskItem* maskItem : m_masks_qmodel->masksSet()->maskItems()) {
         if (IOverlay* overlay = m_mask2overlay[maskItem])
             overlay->setZValue(z);
         --z;
@@ -366,7 +366,7 @@ void MaskGraphicsScene::updateOverlays()
     ASSERT(m_masks_qmodel);
     MasksSet* holder_item = m_masks_qmodel->masksSet();
     ASSERT(holder_item);
-    for (MaskItem* mask_item : holder_item->maskItemsQ()) {
+    for (MaskItem* mask_item : holder_item->maskItems()) {
         IOverlay* item_overlay = registerOverlay(mask_item);
         ASSERT(item_overlay);