diff --git a/src/ui/panes/pid_drawing_tool.rs b/src/ui/panes/pid_drawing_tool.rs
index 68a47de64cb3600b9428b907ca187741b9a8e387..4fcbcf94b7de6a50415541a35844d7ef4d5e9f7e 100644
--- a/src/ui/panes/pid_drawing_tool.rs
+++ b/src/ui/panes/pid_drawing_tool.rs
@@ -242,8 +242,10 @@ impl PidPane {
             ui.menu_button("Symbols", |ui| {
                 for symbol in Symbol::iter() {
                     if ui.button(symbol.to_string()).clicked() {
-                        self.elements
-                            .push(Element::new(self.grid.screen_to_grid(pointer_pos), symbol));
+                        self.elements.push(Element::new(
+                            self.grid.screen_to_grid(pointer_pos).round(),
+                            symbol,
+                        ));
                         self.action.take();
                         ui.close_menu();
                     }
diff --git a/src/ui/panes/pid_drawing_tool/elements.rs b/src/ui/panes/pid_drawing_tool/elements.rs
index 179f5234630203ee43daa6d2c7e8f9cad0cc8122..e3748a197fb3831d392aa7da02f5895c8a24e96c 100644
--- a/src/ui/panes/pid_drawing_tool/elements.rs
+++ b/src/ui/panes/pid_drawing_tool/elements.rs
@@ -25,9 +25,9 @@ pub struct Element {
 }
 
 impl Element {
-    pub fn new(position: Vec2, symbol: Symbol) -> Self {
+    pub fn new(center: Vec2, symbol: Symbol) -> Self {
         Self {
-            position,
+            position: center - symbol.size() / 2.0,
             rotation: 0.0,
             anchor_points: symbol.anchor_points(),
             symbol,
@@ -54,7 +54,7 @@ impl Element {
         let rotm_e_to_g = Mat2::from_angle(self.rotation);
 
         // Center in grid's frame
-        let center_g = rotm_e_to_g * self.symbol.size() / 2.0;
+        let center_g = rotm_e_to_g * self.size() / 2.0;
 
         self.position = p_g - center_g;
     }