diff --git a/KernelLand/Modules/Display/VESA/main.c b/KernelLand/Modules/Display/VESA/main.c
index 25616da22fed03a08215feae40d6a2d3b62843c8..51c80e1a56ef8eddeda32ce2bb441e3f2c5994a9 100644
--- a/KernelLand/Modules/Display/VESA/main.c
+++ b/KernelLand/Modules/Display/VESA/main.c
@@ -363,7 +363,8 @@ int Vesa_IOCtl(tVFS_Node *Node, int ID, void *Data)
 		return 0;
 	
 	case VIDEO_IOCTL_SETCURSORBITMAP:
-		DrvUtil_Video_SetCursor( &gVesa_BufInfo, Data );
+		if( gpVesaCurMode->flags & FLAG_LFB )
+			DrvUtil_Video_SetCursor( &gVesa_BufInfo, Data );
 		return 0;
 	}
 	return 0;
@@ -551,9 +552,9 @@ int Vesa_Int_ModeInfo(tVideo_IOCtl_Mode *data)
 
 void Vesa_int_HideCursor(void)
 {
+	DrvUtil_Video_RemoveCursor( &gVesa_BufInfo );
 	if( gpVesaCurMode->flags & FLAG_LFB )
 	{
-		DrvUtil_Video_RemoveCursor( &gVesa_BufInfo );
 		#if BLINKING_CURSOR
 		if(gpVesaCursorTimer) {
 			Time_RemoveTimer(gpVesaCursorTimer);
@@ -585,6 +586,10 @@ void Vesa_int_ShowCursor(void)
 				giVesaCursorY
 				);
 	}
+	else
+	{
+		DrvUtil_Video_RemoveCursor( &gVesa_BufInfo );
+	}
 }
 
 /**