diff --git a/helix-view/src/view.rs b/helix-view/src/view.rs
index f82de90e..b7bfaa17 100644
--- a/helix-view/src/view.rs
+++ b/helix-view/src/view.rs
@@ -143,8 +143,9 @@ impl View {
             }
         }
 
-        let row = line - self.first_line as usize;
-        let col = col - self.first_col as usize;
+        // It is possible for underflow to occur if the buffer length is larger than the terminal width.
+        let row = line.saturating_sub(self.first_line);
+        let col = col.saturating_sub(self.first_col);
 
         Some(Position::new(row, col))
     }