diff --git a/packages/rtl-console/src/amicommon/video.pp b/packages/rtl-console/src/amicommon/video.pp
index 4ea60eb1ab..3c8c7700ea 100644
--- a/packages/rtl-console/src/amicommon/video.pp
+++ b/packages/rtl-console/src/amicommon/video.pp
@@ -255,7 +255,7 @@ begin
   {$endif}
 
   { FIXME/TODO: next to the hardwired selection, there could be some heuristics,
-    which sets the font size correctly on screens according to the aspect 
+    which sets the font size correctly on screens according to the aspect
     ratio. (KB) }
   VideoFont:=@vgafont;
   VideoFontHeight:=16;
@@ -584,11 +584,11 @@ begin
      SmallForce or ForceCursorUpdate then
   begin
     {$ifdef WITHBUFFERING}
-    DrawChar(BufRp, OldCursorX, OldCursorY, crHidden);
-    if CursorState then DrawChar(BufRp, CursorX, CursorY, CursorType);
+    if (OldCursorX >= 0) and (OldCursorX < ScreenWidth) and (OldCursorY >= 0) and (OldCursorY < ScreenHeight) then DrawChar(BufRp, OldCursorX, OldCursorY, crHidden);
+    if CursorState and (CursorX >= 0) and (CursorX < ScreenWidth) and (CursorY >= 0) and (CursorY < ScreenHeight) then DrawChar(BufRp, CursorX, CursorY, CursorType);
     {$else}
-    DrawChar(VideoWindow^.RPort, OldCursorX, OldCursorY, crHidden);
-    if CursorState then DrawChar(VideoWindow^.RPort, CursorX, CursorY, CursorType);
+    if (OldCursorX >= 0) and (OldCursorX < ScreenWidth) and (OldCursorY >= 0) and (OldCursorY < ScreenHeight) then DrawChar(VideoWindow^.RPort, OldCursorX, OldCursorY, crHidden);
+    if CursorState and (CursorX >= 0) and (CursorX < ScreenWidth) and (CursorY >= 0) and (CursorY < ScreenHeight) then DrawChar(VideoWindow^.RPort, CursorX, CursorY, CursorType);
     {$endif}
     OldCursorX := CursorX;
     OldCursorY := CursorY;