diff --git a/src/ui/panes/pid_drawing_tool.rs b/src/ui/panes/pid_drawing_tool.rs
index b9113ccec8f948819120c51aff3253a132b0f1ae..6f93261a9460692d98617569e7077bdc852b64c7 100644
--- a/src/ui/panes/pid_drawing_tool.rs
+++ b/src/ui/panes/pid_drawing_tool.rs
@@ -4,7 +4,9 @@ mod pos;
 mod symbols;
 
 use connections::Connection;
-use egui::{epaint::PathStroke, Color32, Context, PointerButton, Pos2, Sense, Theme, Ui, Vec2};
+use egui::{
+    epaint::PathStroke, Color32, Context, CursorIcon, PointerButton, Pos2, Sense, Theme, Ui, Vec2,
+};
 use elements::Element;
 use pos::Pos;
 use serde::{Deserialize, Serialize};
@@ -49,9 +51,6 @@ impl Default for PidPane {
 
 impl PaneBehavior for PidPane {
     fn ui(&mut self, ui: &mut egui::Ui) -> PaneResponse {
-        // Set cursor icon
-        // ui.ctx().output_mut(|output| output.cursor_icon = CursorIcon::Grab);
-
         let theme = PidPane::find_theme(ui.ctx());
         self.draw_grid(theme, ui);
         self.draw_connections(ui);
@@ -61,6 +60,14 @@ impl PaneBehavior for PidPane {
         let (_, response) = ui.allocate_at_least(ui.max_rect().size(), Sense::click_and_drag());
         let pointer_pos = response.hover_pos().map(|pos| self.screen_to_grid_pos(pos));
 
+        // Set grab icon when hovering an element
+        if let Some(pointer_pos) = &pointer_pos {
+            if self.is_hovering_element(pointer_pos) {
+                ui.ctx()
+                    .output_mut(|output| output.cursor_icon = CursorIcon::Grab);
+            }
+        }
+
         // Detect the action
         if let Some(pointer_pos) = &pointer_pos {
             if response.clicked_by(PointerButton::Secondary) {