diff --git a/src/ui/panes/pid_drawing_tool.rs b/src/ui/panes/pid_drawing_tool.rs
index 160b421e9ed35651d097cc330bf5d7af03401b9a..a512ce418ae140ab8525720b3e472c22dcb4ea5a 100644
--- a/src/ui/panes/pid_drawing_tool.rs
+++ b/src/ui/panes/pid_drawing_tool.rs
@@ -231,14 +231,21 @@ impl PidPane {
         let window_rect = ui.max_rect();
         let dot_color = PidPane::dots_color(theme);
 
-        let start_x =
-            (window_rect.min.x / self.grid.get_size()) as i32 * self.grid.get_size() as i32;
-        let end_x =
-            (window_rect.max.x / self.grid.get_size() + 1.0) as i32 * self.grid.get_size() as i32;
-        let start_y =
-            (window_rect.min.y / self.grid.get_size()) as i32 * self.grid.get_size() as i32;
-        let end_y =
-            (window_rect.max.y / self.grid.get_size() + 1.0) as i32 * self.grid.get_size() as i32;
+        let offset_x = (self.grid.zero_pos.x % self.grid.get_size()) as i32;
+        let offset_y = (self.grid.zero_pos.y % self.grid.get_size()) as i32;
+
+        let start_x = (window_rect.min.x / self.grid.get_size()) as i32
+            * self.grid.get_size() as i32
+            + offset_x;
+        let end_x = (window_rect.max.x / self.grid.get_size() + 2.0) as i32
+            * self.grid.get_size() as i32
+            + offset_x;
+        let start_y = (window_rect.min.y / self.grid.get_size()) as i32
+            * self.grid.get_size() as i32
+            + offset_y;
+        let end_y = (window_rect.max.y / self.grid.get_size() + 2.0) as i32
+            * self.grid.get_size() as i32
+            + offset_y;
 
         for x in (start_x..end_x).step_by(self.grid.get_size() as usize) {
             for y in (start_y..end_y).step_by(self.grid.get_size() as usize) {