diff --git a/main.go b/main.go
index 9a08468d56820c21c36350fec3fd1e9db2897d12..02d5993b70e61b7632cdc3b7f58cf744f6e8ace6 100644
--- a/main.go
+++ b/main.go
@@ -39,7 +39,6 @@ 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 {
@@ -47,7 +46,6 @@ func processImage(config *Config, client *redis.Client, value string) {
 	}
 
 	wandLinear := wand.Clone()
-	defer wand.Clear()
 	err = wandLinear.TransformImageColorspace(imagick.COLORSPACE_RGB)
 	if err != nil {
 		panic(err)
@@ -81,6 +79,9 @@ func processImage(config *Config, client *redis.Client, value string) {
 			Success: true,
 		})
 	}
+
+	wand.Clear()
+	wandLinear.Clear()
 }
 
 func main() {
diff --git a/util.go b/util.go
index 0815c404cd7b698ce6de8810eb7a94d69522248e..154dc8b949f7e6cea3fc40ea9b42c12d47e0857a 100644
--- a/util.go
+++ b/util.go
@@ -10,7 +10,6 @@ import (
 func resize(wand *imagick.MagickWand, wandLinear *imagick.MagickWand, size Size, quality Quality, target string) error {
 	var err error
 	var mw *imagick.MagickWand
-	defer mw.Clear()
 
 	if size.Width == 0 && size.Height == 0 {
 		mw = wand.Clone()
@@ -91,5 +90,8 @@ func resize(wand *imagick.MagickWand, wandLinear *imagick.MagickWand, size Size,
 	mw.StripImage()
 
 	err = mw.WriteImage(target)
+
+	mw.Clear()
+
 	return err
 }