Index: src/wp-includes/class-wp-image-editor-gd.php
===================================================================
--- src/wp-includes/class-wp-image-editor-gd.php	(revision 29744)
+++ src/wp-includes/class-wp-image-editor-gd.php	(working copy)
@@ -114,7 +114,7 @@
 		$this->update_size( $size[0], $size[1] );
 		$this->mime_type = $size['mime'];
 
-		return true;
+		return $this->set_quality();
 	}
 
 	/**
Index: src/wp-includes/class-wp-image-editor-imagick.php
===================================================================
--- src/wp-includes/class-wp-image-editor-imagick.php	(revision 29744)
+++ src/wp-includes/class-wp-image-editor-imagick.php	(working copy)
@@ -140,10 +140,11 @@
 		}
 
 		$updated_size = $this->update_size();
-		if ( is_wp_error( $updated_size ) )
-				return $updated_size;
+		if ( is_wp_error( $updated_size ) ) {
+			return $updated_size;
+		}
 
-		return true;
+		return $this->set_quality();
 	}
 
 	/**
Index: src/wp-includes/class-wp-image-editor.php
===================================================================
--- src/wp-includes/class-wp-image-editor.php	(revision 29744)
+++ src/wp-includes/class-wp-image-editor.php	(working copy)
@@ -236,10 +236,10 @@
 				 * @param string $context Context of the filter.
 				 */
 				$quality = apply_filters( 'jpeg_quality', $quality, 'image_resize' );
+			}
 
-				if ( ! $this->set_quality( $quality ) ) {
-					$this->quality = $this->default_quality;
-				}
+			if ( ! $this->set_quality( $quality ) ) {
+				$this->quality = $this->default_quality;
 			}
 		}
 
@@ -256,8 +256,12 @@
 	 * @return boolean|WP_Error True if set successfully; WP_Error on failure.
 	 */
 	public function set_quality( $quality = null ) {
+		if ( $quality === null ) {
+			$quality = $this->default_quality;
+		}
+
 		// Allow 0, but squash to 1 due to identical images in GD, and for backwards compatibility.
-		if ( $quality == 0 ) {
+		if ( $quality === 0 ) {
 			$quality = 1;
 		}
 
Index: tests/phpunit/tests/image/editor.php
===================================================================
--- tests/phpunit/tests/image/editor.php	(revision 29744)
+++ tests/phpunit/tests/image/editor.php	(working copy)
@@ -52,6 +52,9 @@
 		// Get an editor
 		$editor = wp_get_image_editor( DIR_TESTDATA . '/images/canola.jpg' );
 
+		// Check default value
+		$this->assertEquals( 90, $editor->get_quality() );
+
 		// Ensure set_quality works
 		$this->assertTrue( $editor->set_quality( 75 ) );
 		$this->assertEquals( 75, $editor->get_quality() );
@@ -59,8 +62,8 @@
 		// Ensure the quality filter works
 		$func = create_function( '', "return 100;");
 		add_filter( 'wp_editor_set_quality', $func );
-		$this->assertTrue( $editor->set_quality( 75 ) );
-		$this->assertEquals( 75, $editor->get_quality() );
+		$this->assertTrue( $editor->set_quality( 70 ) );
+		$this->assertEquals( 70, $editor->get_quality() );
 
 		// Clean up
 		remove_filter( 'wp_editor_set_quality', $func );
Index: tests/phpunit/tests/image/editor_gd.php
===================================================================
--- tests/phpunit/tests/image/editor_gd.php	(revision 29744)
+++ tests/phpunit/tests/image/editor_gd.php	(working copy)
@@ -463,6 +463,9 @@
 		$file = DIR_TESTDATA . '/images/transparent.png';
 
 		$editor = wp_get_image_editor( $file );
+
+		$this->assertNotInstanceOf( 'WP_Error', $editor );
+
 		$editor->load();
 		$editor->resize( 5, 5 );
 		$save_to_file = tempnam( get_temp_dir(), '' ) . '.png';
@@ -483,6 +486,9 @@
 		$file = DIR_TESTDATA . '/images/transparent.png';
 
 		$editor = wp_get_image_editor( $file );
+
+		$this->assertNotInstanceOf( 'WP_Error', $editor );
+
 		$editor->load();
 
 		$save_to_file = tempnam( get_temp_dir(), '' ) . '.png';
Index: tests/phpunit/tests/image/editor_imagick.php
===================================================================
--- tests/phpunit/tests/image/editor_imagick.php	(revision 29744)
+++ tests/phpunit/tests/image/editor_imagick.php	(working copy)
@@ -463,6 +463,9 @@
 		$file = DIR_TESTDATA . '/images/transparent.png';
 
 		$editor = wp_get_image_editor( $file );
+
+		$this->assertNotInstanceOf( 'WP_Error', $editor );
+		
 		$editor->load();
 		$editor->resize( 5, 5 );
 		$save_to_file = tempnam( get_temp_dir(), '' ) . '.png';
@@ -483,6 +486,9 @@
 		$file = DIR_TESTDATA . '/images/transparent.png';
 
 		$editor = wp_get_image_editor( $file );
+
+		$this->assertNotInstanceOf( 'WP_Error', $editor );
+
 		$editor->load();
 
 		$save_to_file = tempnam( get_temp_dir(), '' ) . '.png';
Index: tests/phpunit/tests/image/functions.php
===================================================================
--- tests/phpunit/tests/image/functions.php	(revision 29744)
+++ tests/phpunit/tests/image/functions.php	(working copy)
@@ -224,6 +224,8 @@
 
 			// Save the image as each file extension, check the mime type
 			$img = wp_get_image_editor( DIR_TESTDATA . '/images/canola.jpg' );
+			$this->assertNotInstanceOf( 'WP_Error', $img );
+
 			$temp = get_temp_dir();
 			foreach ( $mime_types as $ext => $mime_type ) {
 				$file = wp_unique_filename( $temp, uniqid() . ".$ext" );
