diff --git a/controls/scroll.c b/controls/scroll.c
index c11825e571d96efb2920ef9f870b537ab2bab731..477b2a1f3580d85e4732af0b9a9b2b7b8c6c8bac 100644
--- a/controls/scroll.c
+++ b/controls/scroll.c
@@ -1159,7 +1159,9 @@ LRESULT WINAPI ScrollBarWndProc( HWND hwnd, UINT message, WPARAM wParam,
 
     /* if key event is received, the scrollbar has the focus*/
     case WM_KEYDOWN:
-        HideCaret(hwnd);  /*hide caret to prevent flicker*/
+        /* hide caret on first KEYDOWN to prevent flicker */
+        if ((lParam & 0x40000000)==0)
+            HideCaret(hwnd);
         SCROLL_HandleKbdEvent( hwnd, wParam );
         break;