diff --git a/main.go b/main.go
index ca9e6ec2ba840ae5e8d069ebd13545d2daf2b91c..2d9f849548365262f646311701e0a26ca6a3ee16 100644
--- a/main.go
+++ b/main.go
@@ -63,7 +63,7 @@ func processImage(config *Config, client *redis.Client, value string) {
 		profiles[name] = wand.GetImageProfile(name)
 	}
 
-	err = wandLinear.TransformImageColorspace(imagick.COLORSPACE_RGB)
+	err = wandLinear.TransformImageColorspace(imagick.COLORSPACE_LAB)
 	if err != nil {
 		panic(err)
 	}
diff --git a/util.go b/util.go
index d0b6f56b12f4286a919ee23c1e41fac26450872f..a29342381966b864f1485fc8f1092216d30b648b 100644
--- a/util.go
+++ b/util.go
@@ -69,14 +69,14 @@ func resize(wand *imagick.MagickWand, wandLinear *imagick.MagickWand, originalCo
 		}
 
 		if (width != nWidth) || (height != nHeight) {
-			err = mw.ResizeImage(nWidth, nHeight, imagick.FILTER_LANCZOS, 1)
+			err = mw.ResizeImage(nWidth, nHeight, imagick.FILTER_BOX, 1)
 			if err != nil {
 				return err
 			}
 		}
 	}
 
-	err = mw.TransformImageColorspace(imagick.COLORSPACE_SRGB)
+	err = mw.TransformImageColorspace(originalColorSpace)
 	if err != nil {
 		return err
 	}
@@ -91,6 +91,10 @@ func resize(wand *imagick.MagickWand, wandLinear *imagick.MagickWand, originalCo
 
 	_ = mw.StripImage()
 
+	for key, value := range profiles {
+		_ = mw.SetImageProfile(key, []byte(value))
+	}
+
 	err = mw.WriteImage(target)
 
 	return err