Index: wp-includes/class-wp-image-editor-gd.php
===================================================================
--- wp-includes/class-wp-image-editor-gd.php	(revision 28233)
+++ wp-includes/class-wp-image-editor-gd.php	(working copy)
@@ -383,8 +383,23 @@
 			if ( function_exists('imageistruecolor') && ! imageistruecolor( $image ) )
 				imagetruecolortopalette( $image, false, imagecolorstotal( $image ) );
 
-			if ( ! $this->make_image( $filename, 'imagepng', array( $image, $filename ) ) )
+			/*
+			 * Convert quality (1-100) to a valid compression value (0-9)
+			 * -1 = use default zlib compression
+			 *  0 = no compression
+			 *  1 = worst compression
+			 *  9 = best compression
+			 */
+			$compression_level = floor( $this->quality / 10 );
+
+			if ( $compression_level > 9 ) {
+				$compression_level = 9;
+			} elseif ( -1 != $compression_level && $compression_level < 0 ) {
+				$compression_level = 0;
+			}
+			if ( ! $this->make_image( $filename, 'imagepng', array( $image, $filename, $compression_level ) ) ) {
 				return new WP_Error( 'image_save_error', __('Image Editor Save Failed') );
+			}
 		}
 		elseif ( 'image/jpeg' == $mime_type ) {
 			if ( ! $this->make_image( $filename, 'imagejpeg', array( $image, $filename, $this->quality ) ) )
