diff --git a/apps/gui/usb_screen.c b/apps/gui/usb_screen.c
index 00e128b..3912a37 100644
--- a/apps/gui/usb_screen.c
+++ b/apps/gui/usb_screen.c
@@ -38,6 +38,7 @@
 #include "led.h"
 #include "appevents.h"
 #include "usb_screen.h"
+#include "scrollbar.h"
 
 #ifdef HAVE_LCD_BITMAP
 #include "bitmaps/usblogo.h"
@@ -57,6 +58,8 @@ int usb_keypad_mode;
 static bool usb_hid;
 #endif
 
+#define USB_BUTTON_TIMEOUT (HZ/10)
+
 #ifndef SIMULATOR
 
 static int handle_usb_events(void)
@@ -84,7 +87,7 @@ static int handle_usb_events(void)
         else
 #endif
         {
-            button = button_get_w_tmo(HZ/2);
+            button = button_get_w_tmo(USB_BUTTON_TIMEOUT);
             /* hid emits the event in get_action */
             send_event(GUI_EVENT_ACTIONUPDATE, NULL);
         }
@@ -186,6 +189,12 @@ static void usb_screen_fix_viewports(struct screen *screen,
 static void usb_screens_draw(struct usb_screen_vps_t *usb_screen_vps_ar)
 {
     int i;
+    static int image_pos[NB_SCREENS] = {0};
+    static int diff[NB_SCREENS] = {5,
+#if NB_SCREENS > 1
+    5
+#endif
+    };
     FOR_NB_SCREENS(i)
     {
         struct screen *screen = &screens[i];
@@ -195,7 +204,6 @@ static void usb_screens_draw(struct usb_screen_vps_t *usb_screen_vps_ar)
 #ifdef HAVE_LCD_BITMAP
         struct viewport *logo = &usb_screen_vps->logo;
 #endif
-
         screen->set_viewport(parent);
         screen->clear_viewport();
         screen->backlight_on();
@@ -205,14 +213,28 @@ static void usb_screens_draw(struct usb_screen_vps_t *usb_screen_vps_ar)
 #ifdef HAVE_REMOTE_LCD
         if (i == SCREEN_REMOTE)
         {
-            screen->bitmap(remote_usblogo, 0, 0, logo->width,
-                logo->height);
+            struct bitmap bm = {logo->width, logo->height, FORMAT_NATIVE, 0, (char*)remote_usblogo};
+            gui_bitmap_scrollbar_draw(&screens[i], &bm, 0, 0, logo->width,
+                                      logo->height, logo->width, 0, image_pos[i], HORIZONTAL);
+            image_pos[i] += diff[i];
+            if (image_pos[i] > logo->width || image_pos[i] < 0)
+                diff[i] *= -1;
         }
         else
 #endif
         {
-            screen->transparent_bitmap(usblogo, 0, 0, logo->width,
-                logo->height);
+            struct bitmap bm = {
+                logo->width, logo->height,
+#if (LCD_DEPTH > 1) || defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1)
+                FORMAT_NATIVE, 0,
+#endif
+                (unsigned char *)usblogo
+            };
+            gui_bitmap_scrollbar_draw(&screens[i], &bm, 0, 0, logo->width,
+                                      logo->height, logo->width, 0, image_pos[i], HORIZONTAL);
+            image_pos[i] += diff[i];
+            if (image_pos[i] > logo->width || image_pos[i] < 0)
+                diff[i] *= -1;
 #ifdef USB_ENABLE_HID
             if (usb_hid)
             {
@@ -287,7 +309,7 @@ void gui_usb_screen_run(void)
     {
         usb_screens_draw(usb_screen_vps_ar);
 #ifdef SIMULATOR
-        if (button_get_w_tmo(HZ/2))
+        if (button_get_w_tmo(USB_BUTTON_TIMEOUT))
             break;
         send_event(GUI_EVENT_ACTIONUPDATE, NULL);
 #else
