Index: src/wp-content/themes/twentyfifteen/functions.php
===================================================================
--- src/wp-content/themes/twentyfifteen/functions.php	(revision 37040)
+++ src/wp-content/themes/twentyfifteen/functions.php	(working copy)
@@ -108,8 +108,12 @@
 	 *
 	 * @since Twenty Fifteen 1.5
 	 */
-	add_image_size( 'twentyfifteen-logo', 248, 248 );
-	add_theme_support( 'custom-logo', array( 'size' => 'twentyfifteen-logo' ) );
+	add_theme_support( 'custom-logo', array( 
+		'height'      => 248,
+		'width'       => 248,
+		'flex-height' => true, // Allows arbitrary aspect ratios but sizes images to the requested width.
+		'flex-width'  => false,
+	) );
 
 	$color_scheme  = twentyfifteen_get_color_scheme();
 	$default_color = trim( $color_scheme[0], '#' );
Index: src/wp-includes/class-wp-customize-manager.php
===================================================================
--- src/wp-includes/class-wp-customize-manager.php	(revision 37040)
+++ src/wp-includes/class-wp-customize-manager.php	(working copy)
@@ -1959,21 +1959,36 @@
 			'transport'      => 'postMessage',
 		) );
 
-		$this->add_control( new WP_Customize_Media_Control( $this, 'custom_logo', array(
-			'label'    => __( 'Logo' ),
-			'section'  => 'title_tagline',
-			'priority' => 8,
-			'mime_type' => 'image',
-			'button_labels' => array(
-				'select'       => __( 'Select logo' ),
-				'change'       => __( 'Change logo' ),
-				'remove'       => __( 'Remove' ),
-				'default'      => __( 'Default' ),
-				'placeholder'  => __( 'No logo selected' ),
-				'frame_title'  => __( 'Select logo' ),
-				'frame_button' => __( 'Choose logo' ),
-			),
-		) ) );
+		$logo_settings = get_theme_support( 'custom-logo' );
+		if ( $logo_settings ) {
+			$logo_defaults = array(
+				'height'      => 500, // Completely arbitrary size, will be "recommended".
+				'width'       => 500,
+				'flex_height' => true, // Allow any aspect ratio and size by default.
+				'flex_width'  => true,
+			);
+			if ( is_array( $logo_settings ) ) {
+				$logo_settings = wp_parse_args( $logo_settings, $logo_defaults );
+			}
+			$this->add_control( new WP_Customize_Cropped_Image_Control( $this, 'custom_logo', array(
+				'label'       => __( 'Logo' ),
+				'section'     => 'title_tagline',
+				'priority'    => 8,
+				'height'      => $logo_settings['height'],
+				'width'       => $logo_settings['width'],
+				'flex_height' => $logo_settings['flex_height'],
+				'flex_width'  => $logo_settings['flex_width'],
+				'button_labels' => array(
+					'select'       => __( 'Select logo' ),
+					'change'       => __( 'Change logo' ),
+					'remove'       => __( 'Remove' ),
+					'default'      => __( 'Default' ),
+					'placeholder'  => __( 'No logo selected' ),
+					'frame_title'  => __( 'Select logo' ),
+					'frame_button' => __( 'Choose logo' ),
+				),
+			) ) );
+		}
 
 		$this->selective_refresh->add_partial( 'site_logo', array(
 			'settings'            => array( 'site_logo' ),
