diff --git a/GUI/Models/DistributionItems.cpp b/GUI/Models/DistributionItems.cpp
index 119fe7ea59d2a5bb2aa95174e5b2738032071e8e..88c3faa679af90114689cd463c1b8eeb3997e489 100644
--- a/GUI/Models/DistributionItems.cpp
+++ b/GUI/Models/DistributionItems.cpp
@@ -228,6 +228,13 @@ void DistributionGateItem::init_distribution(double value)
     setItemValue(P_MAX, value + sigma);
 }
 
+void DistributionGateItem::setRange(const double minimum, const double maximum)
+{
+    ASSERT(minimum <= maximum);
+    setItemValue(P_MIN, minimum);
+    setItemValue(P_MAX, maximum);
+}
+
 // --------------------------------------------------------------------------------------------- //
 
 const QString DistributionLorentzItem::P_HWHM = QString::fromStdString("HWHM");
diff --git a/GUI/Models/DistributionItems.h b/GUI/Models/DistributionItems.h
index 8f80904f1d8640593483f4ecdd12fc7956fc2601..54af499b520c2be9849fbbf65295f8f0149cf643 100644
--- a/GUI/Models/DistributionItems.h
+++ b/GUI/Models/DistributionItems.h
@@ -85,10 +85,11 @@ public:
 };
 
 class BA_CORE_API_ DistributionGateItem : public DistributionItem {
-public:
+private:
     static const QString P_MIN;
     static const QString P_MAX;
 
+public:
     static const QString M_TYPE;
 
     DistributionGateItem();
@@ -96,6 +97,8 @@ public:
     std::unique_ptr<IDistribution1D> createDistribution(double scale = 1.0) const override;
     void init_distribution(double value) override;
     void showMean(bool) override {}
+
+    void setRange(double minimum, double maximum);
 };
 
 class BA_CORE_API_ DistributionLorentzItem : public SymmetricDistributionItem {
diff --git a/GUI/Models/TransformFromDomain.cpp b/GUI/Models/TransformFromDomain.cpp
index 149fecdc967ce933e450ada8b68cd79f25675f14..74151fe3117fbbaec1a244ceedcc5303f02a94bc 100644
--- a/GUI/Models/TransformFromDomain.cpp
+++ b/GUI/Models/TransformFromDomain.cpp
@@ -749,9 +749,11 @@ void setDistribution(BeamDistributionItem* part_distr_item, ParameterDistributio
 
     SessionItem* item = nullptr;
     if (const DistributionGate* distr = dynamic_cast<const DistributionGate*>(p_distribution)) {
-        item = part_distr_item->setDistributionGroupItem<DistributionGateItem>();
-        item->setItemValue(DistributionGateItem::P_MIN, factor * distr->lowerBound());
-        item->setItemValue(DistributionGateItem::P_MAX, factor * distr->upperBound());
+        DistributionGateItem* distr_gate_item =
+            part_distr_item->setDistributionGroupItem<DistributionGateItem>();
+        distr_gate_item->setRange(factor * distr->lowerBound(),
+                                  factor * distr->upperBound());
+        item = distr_gate_item;
     } else if (const DistributionLorentz* distr =
                    dynamic_cast<const DistributionLorentz*>(p_distribution)) {
         DistributionLorentzItem* distr_lorentz_item =