diff --git a/src/drawline.c b/src/drawline.c
index bc8e4d2..f383857 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -1869,7 +1869,7 @@
     }
 #endif
 
-    if ((State & MODE_INSERT) && in_curline && ins_compl_active())
+    if ((State & MODE_INSERT) && in_curline && ins_compl_win_active(wp))
 	area_highlighting = TRUE;
 
 #ifdef FEAT_SYN_HL
@@ -2415,7 +2415,8 @@
 #endif
 
 		// Check if ComplMatchIns highlight is needed.
-		if ((State & MODE_INSERT) && in_curline && ins_compl_active())
+		if ((State & MODE_INSERT) && in_curline
+						&& ins_compl_win_active(wp))
 		{
 		    int ins_match_attr =
 			ins_compl_col_range_attr((int)(ptr - line));
diff --git a/src/insexpand.c b/src/insexpand.c
index 2d14904..522b7f7 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -1865,6 +1865,23 @@
 }
 
 /*
+ * Return True when wp is the actual completion window
+ */
+    int
+ins_compl_win_active(win_T *wp UNUSED)
+{
+    return ins_compl_active()
+#if defined(FEAT_QUICKFIX)
+        && (!wp->w_p_pvw
+# ifdef FEAT_PROP_POPUP
+            && !(wp->w_popup_flags & POPF_INFO)
+# endif
+        )
+#endif
+    ;
+}
+
+/*
  * Selected one of the matches.  When FALSE the match was edited or using the
  * longest common string.
  */
diff --git a/src/popupmenu.c b/src/popupmenu.c
index 6298b5c..ea2edca 100644
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -917,7 +917,7 @@
 {
     int	    resized = FALSE;
     int	    context = pum_height / 2;
-    int	    scroll_offset = pum_selected - pum_height;
+    int	    scroll_offset;
 #ifdef FEAT_QUICKFIX
     int	    prev_selected = pum_selected;
     unsigned	cur_cot_flags = get_cot_flags();
@@ -927,6 +927,7 @@
 #endif
 
     pum_selected = n;
+    scroll_offset = pum_selected - pum_height;
 
     if (pum_selected >= 0 && pum_selected < pum_size)
     {
@@ -950,7 +951,7 @@
 	    // scroll up; when we did a jump it's probably a PageDown then
 	    // scroll a whole page
 	    if (pum_first < scroll_offset + 3)
-		pum_first = MAX(pum_first, scroll_offset + 1);
+		pum_first = MAX(pum_first + pum_height - 2, scroll_offset + 1);
 	    else
 		pum_first = scroll_offset + 1;
 	}
diff --git a/src/proto/insexpand.pro b/src/proto/insexpand.pro
index 2e769b8..24c325f 100644
--- a/src/proto/insexpand.pro
+++ b/src/proto/insexpand.pro
@@ -36,6 +36,7 @@
 char_u *find_word_end(char_u *ptr);
 void ins_compl_clear(void);
 int ins_compl_active(void);
+int ins_compl_win_active(win_T *wp);
 int ins_compl_used_match(void);
 void ins_compl_init_get_longest(void);
 int ins_compl_interrupted(void);
diff --git a/src/testdir/dumps/Test_pum_matchins_11.dump b/src/testdir/dumps/Test_pum_matchins_11.dump
new file mode 100644
index 0000000..a44a6ee
--- /dev/null
+++ b/src/testdir/dumps/Test_pum_matchins_11.dump
@@ -0,0 +1,20 @@
+|i+0&#ffffff0|n|f|o| @70
+|~+0#4040ff13&| @73
+|~| @73
+|[+1#0000000&|S|c|r|a|t|c|h|]| |[|P|r|e|v|i|e|w|]| @37|1|,|1| @11|A|l@1
+|f+0&&|o@1> @71
+|f+0#0000001#e0e0e08|o@1| @11| +0#4040ff13#ffffff0@59
+|b+0#0000001#ffd7ff255|a|r| @11| +0#4040ff13#ffffff0@59
+|你*0#0000001#ffd7ff255|好| +&@10| +0#4040ff13#ffffff0@59
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1|,|1| @11|A|l@1
+|-+2&&@1| |O|m|n|i| |c|o|m|p|l|e|t|i|o|n| |(|^|O|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |3| +0#0000000&@34
diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim
index 8f053fa..729fbec 100644
--- a/src/testdir/test_popup.vim
+++ b/src/testdir/test_popup.vim
@@ -1715,11 +1715,15 @@
 func Test_pum_matchins_highlight()
   CheckScreendump
   let lines =<< trim END
+    let g:change = 0
     func Omni_test(findstart, base)
       if a:findstart
         return col(".")
       endif
-      return [#{word: "foo"}, #{word: "bar"}, #{word: "你好"}]
+      if g:change == 0
+        return [#{word: "foo"}, #{word: "bar"}, #{word: "你好"}]
+      endif
+      return [#{word: "foo", info: "info"}, #{word: "bar"}, #{word: "你好"}]
     endfunc
     set omnifunc=Omni_test
     hi ComplMatchIns ctermfg=red
@@ -1766,6 +1770,10 @@
   call VerifyScreenDump(buf, 'Test_pum_matchins_10', {})
   call term_sendkeys(buf, "\<Esc>")
 
+  call term_sendkeys(buf, ":let g:change=1\<CR>S\<C-X>\<C-O>")
+  call VerifyScreenDump(buf, 'Test_pum_matchins_11', {})
+  call term_sendkeys(buf, "\<Esc>")
+
   call StopVimInTerminal(buf)
 endfunc
 
@@ -1811,4 +1819,15 @@
   call StopVimInTerminal(buf)
 endfunc
 
+" this used to crash
+func Test_popup_completion_many_ctrlp()
+  new
+  let candidates=repeat(['a0'], 99)
+  call setline(1, candidates)
+  exe ":norm! VGg\<C-A>"
+  norm! G
+  call feedkeys("o" .. repeat("\<c-p>", 100), 'tx')
+  bw!
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index d668ad7..7006039 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    956,
+/**/
     955,
 /**/
     954,
