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);
