updated for version 7.1-259
diff --git a/src/screen.c b/src/screen.c
index 219b664..a739927 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -8045,9 +8045,13 @@
 	windgoto(W_WINROW(curwin) + curwin->w_wrow,
 		W_WINCOL(curwin) + (
 #ifdef FEAT_RIGHTLEFT
+		/* With 'rightleft' set and the cursor on a double-wide
+		 * character, position it on the leftmost column. */
 		curwin->w_p_rl ? ((int)W_WIDTH(curwin) - curwin->w_wcol - (
 # ifdef FEAT_MBYTE
-			has_mbyte ? (*mb_ptr2cells)(ml_get_cursor()) :
+			(has_mbyte
+			   && (*mb_ptr2cells)(ml_get_cursor()) == 2
+			   && vim_isprintc(gchar_cursor())) ? 2 :
 # endif
 			1)) :
 #endif
diff --git a/src/version.c b/src/version.c
index 21701b7..459c90e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -667,6 +667,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    259,
+/**/
     258,
 /**/
     257,