diff --git a/helix-term/src/ui/prompt.rs b/helix-term/src/ui/prompt.rs
index c40be1a2..63078c39 100644
--- a/helix-term/src/ui/prompt.rs
+++ b/helix-term/src/ui/prompt.rs
@@ -292,17 +292,21 @@ impl Prompt {
             let area = completion_area;
             let background = theme.get("ui.statusline");
 
+            let items = height as usize * cols as usize;
+
+            let offset = self
+                .selection
+                .map(|selection| selection / items * items)
+                .unwrap_or_default();
+
             surface.clear_with(area, background);
 
             let mut row = 0;
             let mut col = 0;
 
             // TODO: paginate
-            for (i, (_range, completion)) in self
-                .completion
-                .iter()
-                .enumerate()
-                .take(height as usize * cols as usize)
+            for (i, (_range, completion)) in
+                self.completion.iter().enumerate().skip(offset).take(items)
             {
                 let color = if Some(i) == self.selection {
                     // Style::default().bg(Color::Rgb(104, 60, 232))