diff --git a/src/popupmenu.c b/src/popupmenu.c
index d629049..6d91c33 100644
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -589,14 +589,16 @@
 	int     width,
 	int     width_limit,
 	int     totwidth,
-	int     next_isempty)
+	int     next_isempty,
+	int	selected)
 {
-    char_u  *rt;
-    int     cells;
+    char_u  *rt = NULL;
+    int     cells = 0;
     int     over_cell = 0;
     int     truncated = FALSE;
     int     pad = next_isempty ? 0 : 2;
-    int     remaining;
+    int     remaining = 0;
+    int	    trunc_attr = highlight_attr[selected ? HLF_PSI : HLF_PNI];
     int	    truncrl = curwin->w_fill_chars.truncrl != NUL
 					? curwin->w_fill_chars.truncrl : '<';
 
@@ -656,7 +658,8 @@
 	width = cells + over_cell + 1;
 	rt = orig_rt;
 
-	screen_putchar(truncrl, row, col - width + 1 + TPL_LCOL(NULL), attr);
+	screen_putchar(truncrl, row,
+		col - width + 1 + TPL_LCOL(NULL), trunc_attr);
 
 	if (over_cell > 0)
 	    screen_fill(row, row + 1, col - width + 2 + TPL_LCOL(NULL),
@@ -691,15 +694,17 @@
 	int     width,        // width already calculated in outer loop
 	int     width_limit,
 	int     totwidth,
-	int     next_isempty)
+	int     next_isempty,
+	int	selected)
 {
-    int     size;
-    int     cells;
+    int     size = 0;
+    int     cells = 0;
     char_u  *st_end = NULL;
     int     over_cell = 0;
     int     pad = next_isempty ? 0 : 2;
-    int     truncated;
-    int     remaining;
+    int     truncated = FALSE;
+    int     remaining = 0;
+    int	    trunc_attr = highlight_attr[selected ? HLF_PSI : HLF_PNI];
     int	    trunc = curwin->w_fill_chars.trunc != NUL
 					    ? curwin->w_fill_chars.trunc : '>';
 
@@ -756,7 +761,8 @@
 	    screen_fill(row, row + 1, col + cells + TPL_LCOL(NULL),
 		    col + cells + over_cell + TPL_LCOL(NULL), ' ', ' ', attr);
 
-	screen_putchar(trunc, row, col + cells + over_cell + TPL_LCOL(NULL), attr);
+	screen_putchar(trunc, row,
+		col + cells + over_cell + TPL_LCOL(NULL), trunc_attr);
     }
 
     VIM_CLEAR(st);
@@ -785,6 +791,7 @@
     char_u  *p = pum_get_item(idx, item_type);
     int     width = 0;  // item width
     int     w;		// char width
+    int	    selected = idx == pum_selected;
 
     for ( ; ; MB_PTR_ADV(p))
     {
@@ -815,11 +822,11 @@
 #ifdef FEAT_RIGHTLEFT
 	if (pum_rl)
 	    col = pum_display_rtl_text(row, col, st, attr, attrs,
-		    width, pum_width, *totwidth_ptr, next_isempty);
+		    width, pum_width, *totwidth_ptr, next_isempty, selected);
 	else
 #endif
 	    col = pum_display_ltr_text(row, col, st, attr, attrs,
-		    width, pum_width, *totwidth_ptr, next_isempty);
+		    width, pum_width, *totwidth_ptr, next_isempty, selected);
 
 	if (attrs != NULL)
 	    VIM_CLEAR(attrs);
diff --git a/src/testdir/dumps/Test_pum_maxwidth_23.dump b/src/testdir/dumps/Test_pum_maxwidth_23.dump
new file mode 100644
index 0000000..aa8fafa
--- /dev/null
+++ b/src/testdir/dumps/Test_pum_maxwidth_23.dump
@@ -0,0 +1,8 @@
+|一*0&#ffffff0|二|三|四|五|六|七|八|九|十> +&@54
+|一*0#ff404010#e0e0e08|二|三|四|五|六|七| +&|>+0#0000001&| +0#4040ff13#ffffff0@58
+|1+0#ff404010#ffd7ff255|2|3|4|5|6|7|8|9|_|1|2|3|4|5|>+0#0000001&| +0#4040ff13#ffffff0@58
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim
index f1fc960..1fd18ca 100644
--- a/src/testdir/test_popup.vim
+++ b/src/testdir/test_popup.vim
@@ -2030,6 +2030,7 @@
   CheckScreendump
 
   let lines =<< trim END
+    hi StrikeFake ctermfg=9
     let g:change = 0
     func Omni_test(findstart, base)
       if a:findstart
@@ -2054,8 +2055,14 @@
           \ #{word: "bar", menu: "fooMenu", kind: "一二三四"},
           \ #{word: "一二三四五", kind: "multi"},
           \ ]
-      else
         return [#{word: "bar", menu: "fooMenu", kind: "一二三"}]
+      elseif g:change == 3
+        return [#{word: "bar", menu: "fooMenu", kind: "一二三"}]
+      else
+        return [
+          \ #{word: "一二三四五六七八九十", abbr_hlgroup: "StrikeFake"},
+          \ #{word: "123456789_123456789_123456789_", abbr_hlgroup: "StrikeFake"},
+          \ ]
       endif
     endfunc
     set omnifunc=Omni_test
@@ -2168,6 +2175,12 @@
     call term_sendkeys(buf, "\<Esc>:set norightleft\<CR>")
   endif
 
+  call term_sendkeys(buf, ":let g:change=4\<CR>")
+  call TermWait(buf, 50)
+  call term_sendkeys(buf, "S\<C-X>\<C-O>")
+  call VerifyScreenDump(buf, 'Test_pum_maxwidth_23', {'rows': 8})
+  call term_sendkeys(buf, "\<ESC>")
+
   call StopVimInTerminal(buf)
 endfunc
 
diff --git a/src/version.c b/src/version.c
index 6e5b00c..a63fc09 100644
--- a/src/version.c
+++ b/src/version.c
@@ -710,6 +710,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1398,
+/**/
     1397,
 /**/
     1396,
