diff --git src/wp-includes/media.php src/wp-includes/media.php
index 9bf83bb..a7b7ab1 100644
--- src/wp-includes/media.php
+++ src/wp-includes/media.php
@@ -900,12 +900,8 @@ function img_caption_shortcode( $attr, $content = null ) {
 
 	$class = trim( 'wp-caption ' . $atts['align'] . ' ' . $atts['class'] );
 
-	if ( current_theme_supports( 'html5', 'caption' ) ) {
-		return '<figure ' . $atts['id'] . 'style="width: ' . (int) $atts['width'] . 'px;" class="' . esc_attr( $class ) . '">'
-		. do_shortcode( $content ) . '<figcaption class="wp-caption-text">' . $atts['caption'] . '</figcaption></figure>';
-	}
-
-	$caption_width = 10 + $atts['width'];
+	// HTML5 captions never added the extra 10px to the image width
+	$caption_width = current_theme_supports( 'html5', 'caption' ) ? $atts['width'] : 10 + $atts['width'];
 
 	/**
 	 * Filter the width of an image's caption.
@@ -928,8 +924,16 @@ function img_caption_shortcode( $attr, $content = null ) {
 	if ( $caption_width )
 		$style = 'style="width: ' . (int) $caption_width . 'px" ';
 
-	return '<div ' . $atts['id'] . $style . 'class="' . esc_attr( $class ) . '">'
-	. do_shortcode( $content ) . '<p class="wp-caption-text">' . $atts['caption'] . '</p></div>';
+	$html = '';
+	if ( current_theme_supports( 'html5', 'caption' ) ) {
+		$html = '<figure ' . $atts['id'] . $style . 'class="' . esc_attr( $class ) . '">'
+		. do_shortcode( $content ) . '<figcaption class="wp-caption-text">' . $atts['caption'] . '</figcaption></figure>';
+	} else {
+		$html = '<div ' . $atts['id'] . $style . 'class="' . esc_attr( $class ) . '">'
+		. do_shortcode( $content ) . '<p class="wp-caption-text">' . $atts['caption'] . '</p></div>';
+	}
+
+	return $html;
 }
 
 add_shortcode('gallery', 'gallery_shortcode');
