diff --git a/GUI/Model/Detector/DetectorItem.cpp b/GUI/Model/Detector/DetectorItem.cpp
index 6adfc77ca67fbf48b389352228aa2d185568508f..85c65a59ea0dbc5163885fce98ac5867eb2b98e2 100644
--- a/GUI/Model/Detector/DetectorItem.cpp
+++ b/GUI/Model/Detector/DetectorItem.cpp
@@ -103,16 +103,17 @@ void DetectorItem::addMasksToCore(IDetector* detector) const
 {
     const double scale = axesToCoreUnitsFactor();
     const QVector<MaskItem*> maskItems = m_maskContainerItem.maskItems();
-    for (auto maskIter = maskItems.rbegin(); maskIter != maskItems.rend(); maskIter++) {
-        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();
-            detector->setRegionOfInterest(xlow, ylow, xup, yup);
-        } else {
-            std::unique_ptr<IShape2D> shape((*maskIter)->createShape(scale));
-            detector->addMask(*shape, (*maskIter)->maskValue());
+    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();
+                detector->setRegionOfInterest(xlow, ylow, xup, yup);
+            } else {
+                std::unique_ptr<IShape2D> shape((*maskIter)->createShape(scale));
+                detector->addMask(*shape, (*maskIter)->maskValue());
+            }
         }
-    }
 }