diff --git a/Assets/Scripts/InteractionEngine/CommunicationEvents.cs b/Assets/Scripts/InteractionEngine/CommunicationEvents.cs
index 70867258877dfc8d8a2c01a53f81b49c7a031262..bca75d877d64b9cf64721dd3808db7ac66663307 100644
--- a/Assets/Scripts/InteractionEngine/CommunicationEvents.cs
+++ b/Assets/Scripts/InteractionEngine/CommunicationEvents.cs
@@ -81,6 +81,7 @@ public enum OperationSystem
         WindowsStoreApps = 3,
     }
     public static bool CursorVisDefault = true; //Script.
+    public static bool CursorVisLastUsedIngame = true; //Script.
 
     public static bool GadgetCanBeUsed = false;
 
diff --git a/Assets/Scripts/UI/HideUI.cs b/Assets/Scripts/UI/HideUI.cs
index 1408bd6bacb0000fc783a1ec883611df01d96b8b..0b86b7a3dc7eb5112932dc67dd2db73ed03722dc 100644
--- a/Assets/Scripts/UI/HideUI.cs
+++ b/Assets/Scripts/UI/HideUI.cs
@@ -246,10 +246,12 @@ void CheckIf()
                     if (!UICanvas.enabled)
                     {
                         updateMouseCursor.setMouse();
+                        CommunicationEvents.CursorVisLastUsedIngame = true;
                     }
                     else
                     {
                         updateMouseCursor.setMouse_Off();
+                        CommunicationEvents.CursorVisLastUsedIngame = false;
                     }
                     SetCamControl123(UICanvas.enabled);
 
@@ -320,6 +322,7 @@ void CheckIf()
     void CheckUI_Vis()
     {
         GadgetCanBeUsed = true;
+        setMouse_ingame();
     }
 
 
diff --git a/Assets/Scripts/UI/HideUI_mobile.cs b/Assets/Scripts/UI/HideUI_mobile.cs
index 9d818037eb13caf8a4eb74a6041a0d750bacafac..6dc8e19d776412227474451adcb734717ae06d13 100644
--- a/Assets/Scripts/UI/HideUI_mobile.cs
+++ b/Assets/Scripts/UI/HideUI_mobile.cs
@@ -468,7 +468,7 @@ void CheckUI_Vis()
             else
             {
                 //Cursor.visible = true;
-                updateMouseCursor.setMouse();
+                updateMouseCursor.setMouse_Off();
                 SetCursorRenderer123(true);
                 //SetCamControl123(false); 
                 SetCamControl123(true);
diff --git a/Assets/Scripts/UI/InGame/Pause_Menu_mobile.cs b/Assets/Scripts/UI/InGame/Pause_Menu_mobile.cs
index 690995294488ef18e325382190f789ce1f193c4a..804575ea96003bee98749b11f6bba26f2e09c621 100644
--- a/Assets/Scripts/UI/InGame/Pause_Menu_mobile.cs
+++ b/Assets/Scripts/UI/InGame/Pause_Menu_mobile.cs
@@ -102,8 +102,9 @@ private void setPauseToken()
                 }
                 else
                 {
-                    //Cursor.visible = false;
+                    Cursor.visible = false;
                 }
+                //updateMouseCursor.setMouse();
                 UIconfig.GamePaused = true;
                 PauseGame();
 
@@ -119,7 +120,11 @@ private void PauseGame()
     }
     private void ResumeGame()
     {
+
         Time.timeScale = UIconfig.Game_TimeScale;
+
+        if (!CommunicationEvents.CursorVisLastUsedIngame) { Cursor.visible = false; }
+
         if (ResetLevel)
         {
             //Restart resClass = new Restart();
diff --git a/Assets/Scripts/UI/NetwMenu/updateMouseCursor.cs b/Assets/Scripts/UI/NetwMenu/updateMouseCursor.cs
index 2dc0b7fba7a988bc1183e6a70b27357357375d02..95a2f4cece1b4fa2a88632d83d4d6eae3bb88362 100644
--- a/Assets/Scripts/UI/NetwMenu/updateMouseCursor.cs
+++ b/Assets/Scripts/UI/NetwMenu/updateMouseCursor.cs
@@ -5,9 +5,27 @@
 
 public static class updateMouseCursor
 {
+    private static int setMouseCursorAlreadyDone = 0;
 
 
+    
+    public static void setMouse_ingame()
+    {
+
+        if (CommunicationEvents.CursorVisLastUsedIngame)
+        {
+            setMouse();
+        }
+        else
+        {
+            setMouse_Off();
+        }
+    }
 
+
+    
+    
+    
     public static void setMouse_Off()
     {
         Cursor.visible = false;
@@ -28,13 +46,22 @@ public static void setMouse()
         }
         else
         {
+            DefineCursorBefore(); 
             Cursor.visible = true;
             CommunicationEvents.CursorVisDefault = true;
         }
 
+        
+    }
 
 
+    private static void DefineCursorBefore()
+    {
+        if (setMouseCursorAlreadyDone < 10) { if (DefineCursor()) { setMouseCursorAlreadyDone++; } }
+    }
 
+    private static bool DefineCursor()
+    {
         //Android crashes in level scene;
         if (CommunicationEvents.Opsys != CommunicationEvents.OperationSystem.Android)
         {
@@ -63,8 +90,11 @@ public static void setMouse()
             Cursor.SetCursor(bestCursTextur, Vector2.zero, CursorMode.ForceSoftware);
             //print("bestCursTexturSize " + bestCursTexturSize + " " + CursorTexture_List_01.Count);
 
-
+            return true;
 
         }
+
+        return false;
     }
+
 }
\ No newline at end of file