diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index e364cf1..4d5b0b6 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -1946,6 +1946,10 @@ static int convert_viewport(struct wps_data *data, struct skin_element* element)
         skin_vp->vp.height + skin_vp->vp.y > display->lcdheight)
         return CALLBACK_ERROR;
 
+    /* Fix x position for RTL languages */
+    if (follow_lang_direction && is_lang_rtl())
+        skin_vp->vp.x = display->lcdwidth - skin_vp->vp.x - skin_vp->vp.width;
+
     return CALLBACK_OK;
 }
 
