diff --git a/xvaga/xvaga.cpp b/xvaga/xvaga.cpp
index d468e7edd..46d4e9c68 100755
--- a/xvaga/xvaga.cpp
+++ b/xvaga/xvaga.cpp
@@ -209,7 +209,7 @@ protected:
   virtual void Notify() { Toggle(); }
 
 public:
-	void SetPos(int x, int y) { _pos.h = x; _pos.v = y; }
+	void SetPos(int x, int y);
 	void SetSize(int x, int y) { _size.x = x; _size.y = y; }
 	void Show(WINDOW w, bool on = true);
 	void Hide() { Show(false); }
@@ -226,6 +226,13 @@ void TwxCaret::Kill()
 	_owner = NULL_WIN;
 }
 
+void TwxCaret::SetPos(int x, int y) 
+{ 
+  if (_visible && _drawn) // Lo cancella se necessario
+	  Toggle();  
+  _pos.h = x; _pos.v = y; 
+}
+
 void TwxCaret::Show(WINDOW w, bool on)
 {
   if (_visible && _drawn)
@@ -259,9 +266,10 @@ void TwxCaret::Toggle()
 	pen.width = _size.x;
 	pen.pat = PAT_SOLID;
 	pen.style = P_SOLID;
-	pen.color = _drawn ? dct.fore_color : dct.back_color;
-	xvt_dwin_set_cpen(_owner, &pen);
-	xvt_dwin_set_draw_mode(_owner, M_COPY);
+  pen.color = dct.fore_color;
+	xvt_dwin_set_draw_mode(_owner, M_NOT_XOR);
+	
+  xvt_dwin_set_cpen(_owner, &pen);
 	xvt_dwin_draw_set_pos(_owner, _pos);
 	PNT p = _pos;	p.v -= _size.y-1;