Index: src/wp-admin/includes/image-edit.php
===================================================================
--- src/wp-admin/includes/image-edit.php	(revision 36854)
+++ src/wp-admin/includes/image-edit.php	(working copy)
@@ -152,7 +152,7 @@
 	</div>
 
 	<figure class="imgedit-thumbnail-preview">
-		<img src="<?php echo $thumb['url']; ?>" width="<?php echo $thumb_img[0]; ?>" height="<?php echo $thumb_img[1]; ?>" class="imgedit-size-preview" alt="" draggable="false" />
+		<img src="<?php echo set_url_scheme( $thumb['url'] ); ?>" width="<?php echo $thumb_img[0]; ?>" height="<?php echo $thumb_img[1]; ?>" class="imgedit-size-preview" alt="" draggable="false" />
 		<figcaption class="imgedit-thumbnail-preview-caption"><?php _e( 'Current thumbnail' ); ?></figcaption>
 	</figure>
 
@@ -870,7 +870,7 @@
 			// Check if it's an image edit from attachment edit screen
 			if ( ! empty( $_REQUEST['context'] ) && 'edit-attachment' == $_REQUEST['context'] ) {
 				$thumb_url = wp_get_attachment_image_src( $post_id, array( 900, 600 ), true );
-				$return->thumbnail = $thumb_url[0];
+				$return->thumbnail = set_url_scheme( $thumb_url[0] );
 			} else {
 				$file_url = wp_get_attachment_url($post_id);
 				if ( ! empty( $meta['sizes']['thumbnail'] ) && $thumb = $meta['sizes']['thumbnail'] ) {
Index: src/wp-includes/media.php
===================================================================
--- src/wp-includes/media.php	(revision 36854)
+++ src/wp-includes/media.php	(working copy)
@@ -766,6 +766,12 @@
 			$image = array( $src, $width, $height );
 		}
 	}
+
+	// Change the scheme in the admin to match when either is_ssl() or force_ssl_admin().
+	if ( $image && is_admin() ) {
+		$image[0] = set_url_scheme( $image[0], 'admin' );
+	}
+
 	/**
 	 * Filter the image src result.
 	 *
Index: tests/phpunit/tests/media.php
===================================================================
--- tests/phpunit/tests/media.php	(revision 36854)
+++ tests/phpunit/tests/media.php	(working copy)
@@ -1408,4 +1408,24 @@
 
 		$this->assertSame( $expected, $actual );
 	}
+
+	/**
+	 * @ticket 34109
+	 */
+	function test_wp_get_attachment_image_src_https_admin() {
+		// Save our starting setup.
+		$force_ssl_admin = force_ssl_admin();
+		$curent_screen = get_current_screen();
+
+		force_ssl_admin( true );
+		set_current_screen( 'dashboard' );
+
+		$image = wp_get_attachment_image_src( self::$large_id );
+
+		$this->assertSame( $image[0], set_url_scheme( $image[0], 'https' ) );
+
+		// Leave things as we found them.
+		force_ssl_admin( $force_ssl_admin );
+		$GLOBALS['current_screen'] = $curent_screen;
+	}
 }
