diff --git a/main.go b/main.go
index ea1f5738ddf81b1125fb9e039d537c15d67c6b5f..dd51d1eae41e875fee4a5e27b553c65c26929e52 100644
--- a/main.go
+++ b/main.go
@@ -39,6 +39,7 @@ func processImage(config *Config, client *redis.Client, value string) {
 	errorChannel := make(chan error)
 
 	wand := imagick.NewMagickWand()
+	defer wand.Destroy()
 
 	err := wand.ReadImage(filepath.Join(config.SourceFolder, image.Id))
 	if err != nil {
@@ -46,6 +47,8 @@ func processImage(config *Config, client *redis.Client, value string) {
 	}
 
 	wandLinear := wand.Clone()
+	defer wandLinear.Destroy()
+
 	err = wandLinear.TransformImageColorspace(imagick.COLORSPACE_RGB)
 	if err != nil {
 		panic(err)
@@ -79,9 +82,6 @@ func processImage(config *Config, client *redis.Client, value string) {
 			Success: true,
 		})
 	}
-
-	wand.Destroy()
-	wandLinear.Destroy()
 }
 
 func main() {
diff --git a/util.go b/util.go
index 8a7422ce5ed225bf58918c1037880cf0ff4e70fe..dbea13873464dc1a8ad7d406b0ea81a3cad086d1 100644
--- a/util.go
+++ b/util.go
@@ -13,8 +13,10 @@ func resize(wand *imagick.MagickWand, wandLinear *imagick.MagickWand, size Size,
 
 	if size.Width == 0 && size.Height == 0 {
 		mw = wand.Clone()
+		defer mw.Destroy()
 	} else {
 		mw = wandLinear.Clone()
+		defer mw.Destroy()
 
 		width := mw.GetImageWidth()
 		height := mw.GetImageHeight()
@@ -91,7 +93,5 @@ func resize(wand *imagick.MagickWand, wandLinear *imagick.MagickWand, size Size,
 
 	err = mw.WriteImage(target)
 
-	mw.Destroy()
-
 	return err
 }