@@ -343,10 +343,11 @@ translate :: (Int, Int) -> Image -> Image
343343translate v i = Translation v i
344344
345345crop :: (Word, Word) -> Image -> Image
346−crop v@(w,h) i
347− | w == 0 = EmptyImage
348− | h == 0 = EmptyImage
349− | otherwise = ImagePad v i
346+crop (0,_) _ = EmptyImage
347+crop (_,0) _ = EmptyImage
348+crop v (ImageCrop _size i) = ImagePad (min (fst v) (fst _size), min (snd v) (snd _size)) i
349+crop v (ImagePad _size i) = ImagePad (min (fst v) (fst _size), min (snd v) (snd _size)) i
350+crop v i = ImagePad v i
350351
351352pad :: (Word, Word) -> Image -> Image
352353pad v@(w,h) i