Index: src/wp-includes/media.php
===================================================================
--- src/wp-includes/media.php	(revision 35904)
+++ src/wp-includes/media.php	(working copy)
@@ -1279,6 +1279,11 @@
 	}
 
 	$base_url = trailingslashit( _wp_upload_dir_baseurl() );
+
+	// Remove the protocol so we can match http, https, and protocol relative $image_src.
+	$base_url = preg_replace( '#^https?:#i', '', $base_url );
+	$image_src_compare = preg_replace( '#^https?:#i', '', $image_src );
+
 	$image_base_url = $base_url;
 
 	$dirname = dirname( $image_meta['file'] );
@@ -1296,7 +1301,7 @@
 	$all_sizes[] = $base_url . $image_meta['file'];
 
 	// Bail early if the image src doesn't match any of the known image sizes.
-	if ( ! in_array( $image_src, $all_sizes ) ) {
+	if ( ! in_array( $image_src_compare, $all_sizes ) ) {
 		return $image;
 	}
 
Index: tests/phpunit/tests/media.php
===================================================================
--- tests/phpunit/tests/media.php	(revision 35904)
+++ tests/phpunit/tests/media.php	(working copy)
@@ -1133,4 +1133,42 @@
 		// Intermediate sized GIFs should not include the full size in the srcset.
 		$this->assertFalse( strpos( wp_calculate_image_srcset( $size_array, $large_src, $image_meta ), $full_src ) );
 	}
+
+	/**
+	 * @ticket 35045
+	 * @ticket 33641
+	 */
+	function test_wp_make_content_images_responsive_schemes() {
+		$image_meta = wp_get_attachment_metadata( self::$large_id );
+		$size_array = $this->_get_image_size_array_from_name( 'medium' );
+
+		$srcset = sprintf( 'srcset="%s"', wp_get_attachment_image_srcset( self::$large_id, $size_array, $image_meta ) );
+		$sizes  = sprintf( 'sizes="%s"', wp_get_attachment_image_sizes( self::$large_id, $size_array, $image_meta ) );
+
+		// Build HTML for the editor.
+		$img          = get_image_tag( self::$large_id, '', '', '', 'medium' );
+		$img_https    = str_replace( 'http://', 'https://', $img );
+		$img_relative = str_replace( 'http://', '//', $img );
+
+		// Manually add srcset and sizes to the markup from get_image_tag();
+		$respimg          = preg_replace( '|<img ([^>]+) />|', '<img $1 ' . $srcset . ' ' . $sizes . ' />', $img );
+		$respimg_https    = preg_replace( '|<img ([^>]+) />|', '<img $1 ' . $srcset . ' ' . $sizes . ' />', $img_https );
+		$respimg_relative = preg_replace( '|<img ([^>]+) />|', '<img $1 ' . $srcset . ' ' . $sizes . ' />', $img_relative );
+
+		$content = '
+			<p>Image, http: protocol. Should have srcset and sizes.</p>
+			%1$s
+
+			<p>Image, http: protocol. Should have srcset and sizes.</p>
+			%2$s
+
+			<p>Image, protocol-relative. Should have srcset and sizes.</p>
+			%3$s';
+
+		$unfiltered = sprintf( $content, $img, $img_https, $img_relative );
+		$expected   = sprintf( $content, $respimg, $respimg_https, $respimg_relative );
+		$actual     = wp_make_content_images_responsive( $unfiltered );
+
+		$this->assertSame( $expected, $actual );
+	}
 }
