diff --git a/Assets/Scripts/UI/FactExplorer/FactExplorer.cs b/Assets/Scripts/UI/FactExplorer/FactExplorer.cs
index c23cdad9582f9a5b6e947af7b4e89787ee0994e7..b956c23c999a30d2fc8642cf2dd875e3ef127233 100644
--- a/Assets/Scripts/UI/FactExplorer/FactExplorer.cs
+++ b/Assets/Scripts/UI/FactExplorer/FactExplorer.cs
@@ -86,16 +86,20 @@ private void DestroyIfClickedOutside()
     private void MoveToPreferredPosition(Vector3 prefPos)
     {
         LayoutRebuilder.ForceRebuildLayoutImmediate(transform.GetComponent<RectTransform>());
-        // calculate opimal position
+        // calculate optimal position
         var deltaPos = mainFactUI.position - prefPos;
         transform.position -= deltaPos;
 
         // clamp position, so that no parts of the FactExplorer are out of screen
-        RectTransform feRect = GetComponent<RectTransform>();
-        Vector2 apos = feRect.anchoredPosition;
-        apos.x = Mathf.Clamp(apos.x, 0, Screen.width - feRect.sizeDelta.x);
-        apos.y = Mathf.Clamp(apos.y, -Screen.height + feRect.sizeDelta.y, 0);
-        feRect.anchoredPosition = apos;
+        RectTransform rect = GetComponent<RectTransform>();
+        RectTransform canvasRect = GetComponentInParent<Canvas>().transform.GetComponent<RectTransform>();
+
+        var sizeDelta = canvasRect.sizeDelta - rect.sizeDelta;
+        var panelPivot = rect.pivot;
+        var position = rect.anchoredPosition;
+        position.x = Mathf.Clamp(position.x, -sizeDelta.x * panelPivot.x, sizeDelta.x * (1 - panelPivot.x));
+        position.y = Mathf.Clamp(position.y, -sizeDelta.y * panelPivot.y, sizeDelta.y * (1 - panelPivot.y));
+        rect.anchoredPosition = position;
     }
     #endregion Implementation