diff --git a/Assets/Scripts/Store/EnemySpawnController.cs b/Assets/Scripts/Store/EnemySpawnController.cs
index 388b868b9d9b1769c2c98c54e6335ddb5113dda5..1539dc29a9576e32055ae377e9e5220dae3c7480 100644
--- a/Assets/Scripts/Store/EnemySpawnController.cs
+++ b/Assets/Scripts/Store/EnemySpawnController.cs
@@ -70,24 +70,16 @@ public class EnemySpawnController : MonoBehaviour
         if (StatsManager.instance.ModifyMana(-1 * (int)activeSpawn.enemyCost))
         {
             dragObject.GetComponent<Image>().sprite = activeSpawn.EnemySprite;
-            enemyImage = Instantiate(dragObject, PositionPrefab(), Quaternion.identity, transform);
+            enemyImage = Instantiate(dragObject, GetPreviewWorldPosition(), Quaternion.identity, transform);
         }
     }
 
-    Vector3 PositionPrefab()
-    {
-        Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
-        pos.z = 0;
-        return pos;
-    }
-
     public void OnEnemyDrag()
     {
         if (enemyImage != null)
         {
-            enemyImage.transform.position = PositionPrefab();
+            enemyImage.transform.position = GetPreviewWorldPosition();
         }
-
     }
 
     public void OnEnemyDrop()
@@ -96,7 +88,19 @@ public class EnemySpawnController : MonoBehaviour
         {
             Destroy(enemyImage);
             enemyImage = null;
-            Instantiate(activeSpawn.enemyPrefab, PositionPrefab(), Quaternion.identity);
+            var targetPos = GetPreviewWorldPosition();
+            var newEnemy = Instantiate(activeSpawn.enemyPrefab, targetPos, Quaternion.identity);
+            // The spawned Enemy has the pivot at the bottom, not in the middle.
+            // Move it down by half its height to match the preview position.
+            targetPos.y -= newEnemy.GetComponent<SpriteRenderer>().bounds.extents.y;
+            newEnemy.transform.position = targetPos;
         }
     }
+
+    Vector3 GetPreviewWorldPosition()
+    {
+        Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
+        pos.z = 0;
+        return pos;
+    }
 }