Index: src/js/_enqueues/wp/revisions.js
===================================================================
--- src/js/_enqueues/wp/revisions.js	(revision 45303)
+++ src/js/_enqueues/wp/revisions.js	(working copy)
@@ -626,6 +626,9 @@
 				model: tooltip
 			}) );
 
+			// Add the visually hidden slider help view.
+			this.views.add( new revisions.view.SliderHelp() );
+
 			// Add the slider view
 			this.views.add( new revisions.view.Slider({
 				model: slider
@@ -727,7 +730,7 @@
 			// Add the 'from' view
 			this.views.add( new revisions.view.MetaFrom({
 				model: this.model,
-				className: 'diff-meta diff-meta-from'
+				className: 'diff-meta diff-meta-from',
 			}) );
 
 			// Add the 'to' view
@@ -802,6 +805,12 @@
 		}
 	});
 
+	// The slider visually hidden help view.
+	revisions.view.SliderHelp = wp.Backbone.View.extend({
+		className: 'revisions-slider-hidden-help',
+		template:  wp.template( 'revisions-slider-hidden-help' )
+	});
+
 	// The tooltip view.
 	// Encapsulates the tooltip.
 	revisions.view.Tooltip = wp.Backbone.View.extend({
@@ -941,6 +950,19 @@
 		ready: function() {
 			this.$el.css('width', ( this.model.revisions.length * 50 ) + 'px');
 			this.$el.slider( _.extend( this.model.toJSON(), {
+				create: function() {
+					var handles = $( '.ui-slider-handle' );
+					handles.first().attr( {
+						role: 'button',
+						'aria-labelledby': 'diff-title-from',
+						'aria-describedby': 'revisions-slider-hidden-help',
+					} );
+					handles.last().attr( {
+						role: 'button',
+						'aria-labelledby': 'diff-title-to',
+						'aria-describedby': 'revisions-slider-hidden-help',
+					} );
+				},
 				start: this.start,
 				slide: this.slide,
 				stop:  this.stop
Index: src/wp-admin/css/revisions.css
===================================================================
--- src/wp-admin/css/revisions.css	(revision 45303)
+++ src/wp-admin/css/revisions.css	(working copy)
@@ -179,7 +179,11 @@
 	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
 }
 
-.revisions-diff h3:first-child {
+.revisions-diff .diff-field-heading {
+	margin-left: 6px;
+}
+
+.revisions-diff .diff-field-heading:first-child {
 	margin-top: 0;
 }
 
@@ -189,44 +193,49 @@
 	vertical-align: middle;
 }
 
-table.diff tbody tr td:nth-child(2) {
-	width: 4%;
-}
-
 table.diff {
 	table-layout: fixed;
 	width: 100%;
+	border-collapse: collapse;
 	white-space: pre-wrap;
 }
 
-table.diff col.content {
+table.diff td {
 	width: auto;
 }
 
-table.diff col.content.diffsplit {
-	width: 48%;
+table.diff.is-split-view th:first-child,
+table.diff.is-split-view td:first-child {
+	width: 50%;
+	border-right: 50px solid transparent;
 }
 
-table.diff col.diffsplit.middle {
-	width: auto;
+table.diff.is-split-view th:last-child,
+table.diff.is-split-view td:last-child {
+	width: 50%;
+	border-left: 50px solid transparent;
 }
 
-table.diff col.ltype {
-	width: 30px;
-}
-
 table.diff tr {
 	background-color: transparent;
 }
 
-table.diff td,
 table.diff th {
+	font-size: inherit;
+	line-height: inherit;
+	padding: 0 6px 1em;
+	text-align: left;
+	vertical-align: top;
+}
+
+table.diff td {
 	font-family: Consolas, Monaco, monospace;
 	font-size: 14px;
-	line-height: 1.618;
-	padding: .5em;
+	line-height: 1.5714;
+	padding: 6px;
 	vertical-align: top;
 	word-wrap: break-word;
+	background-clip: padding-box;
 }
 
 table.diff td h1,
@@ -457,8 +466,7 @@
 	touch-action: none;
 }
 
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.focus {
+.wp-slider .ui-slider-handle {
 	background: #f7f7f7;
 	border: 1px solid #ccc;
 	box-shadow: 0 1px 0 #cccccc;
@@ -470,6 +478,15 @@
 	border-color: #999;
 }
 
+.wp-slider .ui-slider-handle:focus,
+.wp-slider .ui-slider-handle.ui-state-focus {
+	background: #fafafa;
+	border-color: #999;
+	box-shadow: 0 0 0 2px #5b9dd9;
+	/* Only visible in Windows High Contrast mode */
+	outline: 2px solid transparent;
+}
+
 .wp-slider .ui-slider-handle:active,
 .wp-slider .ui-slider-handle.ui-state-active {
 	background: #eee;
Index: src/wp-admin/includes/revision.php
===================================================================
--- src/wp-admin/includes/revision.php	(revision 45303)
+++ src/wp-admin/includes/revision.php	(working copy)
@@ -84,6 +84,8 @@
 
 		$args = array(
 			'show_split_view' => true,
+			'title_left'      => __( 'Base revision' ),
+			'title_right'     => __( 'Compared revision' ),
 		);
 
 		/**
@@ -107,14 +109,30 @@
 
 		$diff = wp_text_diff( $content_from, $content_to, $args );
 
+		$is_split_view       = ! empty( $args['show_split_view'] );
+		$is_split_view_class = $is_split_view ? ' is-split-view' : '';
+
+		// Handle the post title when there's no diff.
 		if ( ! $diff && 'post_title' === $field ) {
-			// It's a better user experience to still show the Title, even if it didn't change.
-			// No, you didn't see this.
-			$diff = '<table class="diff"><colgroup><col class="content diffsplit left"><col class="content diffsplit middle"><col class="content diffsplit right"></colgroup><tbody><tr>';
+			$diff = "<table class='diff$is_split_view_class'><tbody>";
 
+			if ( $args['title_left'] || $args['title_right'] ) {
+				$th_or_td_left  = empty( $args['title_left'] ) ? 'td' : 'th';
+				$th_or_td_right = empty( $args['title_right'] ) ? 'td' : 'th';
+
+				$diff .= "<tr class='diff-sub-title'>\n";
+				$diff .= "\t<$th_or_td_left>$args[title_left]</$th_or_td_left>\n";
+				if ( $is_split_view ) {
+					$diff .= "\t<$th_or_td_right>$args[title_right]</$th_or_td_right>\n";
+				}
+				$diff .= "</tr>\n";
+			}
+
+			$diff .= "<tr>\n";
+
 			// In split screen mode, show the title before/after side by side.
 			if ( true === $args['show_split_view'] ) {
-				$diff .= '<td>' . esc_html( $compare_from->post_title ) . '</td><td></td><td>' . esc_html( $compare_to->post_title ) . '</td>';
+				$diff .= '<td>' . esc_html( $compare_from->post_title ) . '</td><td>' . esc_html( $compare_to->post_title ) . '</td>';
 			} else {
 				$diff .= '<td>' . esc_html( $compare_from->post_title ) . '</td>';
 
@@ -364,6 +382,11 @@
 		</div>
 	</script>
 
+	<script id="tmpl-revisions-slider-hidden-help" type="text/html">
+		<h2 class="screen-reader-text"><?php esc_html_e( 'Select a revision' ); ?></h2>
+		<p id="revisions-slider-hidden-help" hidden><?php esc_html_e( 'Change revision by using the left and arrow keys' ); ?></p>
+	</script>
+
 	<script id="tmpl-revisions-checkbox" type="text/html">
 		<div class="revision-toggle-compare-mode">
 			<label>
@@ -381,7 +404,7 @@
 
 	<script id="tmpl-revisions-meta" type="text/html">
 		<# if ( ! _.isUndefined( data.attributes ) ) { #>
-			<div class="diff-title">
+			<div class="diff-title" id="diff-title-{{ data.type }}">
 				<# if ( 'from' === data.type ) { #>
 					<strong><?php _ex( 'From:', 'Followed by post revision info' ); ?></strong>
 				<# } else if ( 'to' === data.type ) { #>
@@ -398,7 +421,7 @@
 							'<span class="author-name">{{ data.attributes.author.name }}</span>'
 						);
 						?>
-							</span>
+						</span>
 					<# } else if ( data.attributes.current ) { #>
 						<span class="byline">
 						<?php
@@ -407,7 +430,7 @@
 							'<span class="author-name">{{ data.attributes.author.name }}</span>'
 						);
 						?>
-							</span>
+						</span>
 					<# } else { #>
 						<span class="byline">
 						<?php
@@ -416,30 +439,31 @@
 							'<span class="author-name">{{ data.attributes.author.name }}</span>'
 						);
 						?>
-							</span>
+						</span>
 					<# } #>
 						<span class="time-ago">{{ data.attributes.timeAgo }}</span>
 						<span class="date">({{ data.attributes.dateShort }})</span>
 					</div>
-				<# if ( 'to' === data.type && data.attributes.restoreUrl ) { #>
-					<input  <?php if ( wp_check_post_lock( $post->ID ) ) { ?>
+				</div>
+			</div>
+			<# if ( 'to' === data.type && data.attributes.restoreUrl ) { #>
+				<input <?php if ( wp_check_post_lock( $post->ID ) ) { ?>
+					disabled="disabled"
+				<?php } else { ?>
+					<# if ( data.attributes.current ) { #>
 						disabled="disabled"
-					<?php } else { ?>
-						<# if ( data.attributes.current ) { #>
-							disabled="disabled"
-						<# } #>
-					<?php } ?>
-					<# if ( data.attributes.autosave ) { #>
-						type="button" class="restore-revision button button-primary" value="<?php esc_attr_e( 'Restore This Autosave' ); ?>" />
-					<# } else { #>
-						type="button" class="restore-revision button button-primary" value="<?php esc_attr_e( 'Restore This Revision' ); ?>" />
 					<# } #>
+				<?php } ?>
+				<# if ( data.attributes.autosave ) { #>
+					type="button" class="restore-revision button button-primary" value="<?php esc_attr_e( 'Restore This Autosave' ); ?>" />
+				<# } else { #>
+					type="button" class="restore-revision button button-primary" value="<?php esc_attr_e( 'Restore This Revision' ); ?>" />
 				<# } #>
-			</div>
-		<# if ( 'tooltip' === data.type ) { #>
-			<div class="revisions-tooltip-arrow"><span></span></div>
+			<# } #>
+			<# if ( 'tooltip' === data.type ) { #>
+				<div class="revisions-tooltip-arrow"><span></span></div>
+			<# } #>
 		<# } #>
-	<# } #>
 	</script>
 
 	<script id="tmpl-revisions-diff" type="text/html">
@@ -447,7 +471,7 @@
 		<div class="diff-error"><?php _e( 'Sorry, something went wrong. The requested comparison could not be loaded.' ); ?></div>
 		<div class="diff">
 		<# _.each( data.fields, function( field ) { #>
-			<h3>{{ field.name }}</h3>
+			<h2 class="diff-field-heading">{{ field.name }}</h2>
 			{{{ field.diff }}}
 		<# }); #>
 		</div>
Index: src/wp-includes/class-wp-text-diff-renderer-table.php
===================================================================
--- src/wp-includes/class-wp-text-diff-renderer-table.php	(revision 45303)
+++ src/wp-includes/class-wp-text-diff-renderer-table.php	(working copy)
@@ -176,7 +176,7 @@
 			}
 
 			if ( $this->_show_split_view ) {
-				$r .= '<tr>' . $this->emptyLine() . $this->emptyLine() . $this->addedLine( $line ) . "</tr>\n";
+				$r .= '<tr>' . $this->emptyLine() . $this->addedLine( $line ) . "</tr>\n";
 			} else {
 				$r .= '<tr>' . $this->addedLine( $line ) . "</tr>\n";
 			}
@@ -201,7 +201,7 @@
 				$line = apply_filters( 'process_text_diff_html', $processed_line, $line, 'deleted' );
 			}
 			if ( $this->_show_split_view ) {
-				$r .= '<tr>' . $this->deletedLine( $line ) . $this->emptyLine() . $this->emptyLine() . "</tr>\n";
+				$r .= '<tr>' . $this->deletedLine( $line ) . $this->emptyLine() . "</tr>\n";
 			} else {
 				$r .= '<tr>' . $this->deletedLine( $line ) . "</tr>\n";
 			}
@@ -226,7 +226,7 @@
 				$line = apply_filters( 'process_text_diff_html', $processed_line, $line, 'unchanged' );
 			}
 			if ( $this->_show_split_view ) {
-				$r .= '<tr>' . $this->contextLine( $line ) . $this->emptyLine() . $this->contextLine( $line ) . "</tr>\n";
+				$r .= '<tr>' . $this->contextLine( $line ) . $this->contextLine( $line ) . "</tr>\n";
 			} else {
 				$r .= '<tr>' . $this->contextLine( $line ) . "</tr>\n";
 			}
@@ -317,7 +317,7 @@
 				$r .= $this->_deleted( array( $orig_line ), false );
 			} else { // A true changed row.
 				if ( $this->_show_split_view ) {
-					$r .= '<tr>' . $this->deletedLine( $orig_line ) . $this->emptyLine() . $this->addedLine( $final_line ) . "</tr>\n";
+					$r .= '<tr>' . $this->deletedLine( $orig_line ) . $this->addedLine( $final_line ) . "</tr>\n";
 				} else {
 					$r .= '<tr>' . $this->deletedLine( $orig_line ) . '</tr><tr>' . $this->addedLine( $final_line ) . "</tr>\n";
 				}
Index: src/wp-includes/pluggable.php
===================================================================
--- src/wp-includes/pluggable.php	(revision 45303)
+++ src/wp-includes/pluggable.php	(working copy)
@@ -2689,12 +2689,14 @@
 	 */
 	function wp_text_diff( $left_string, $right_string, $args = null ) {
 		$defaults = array(
-			'title'       => '',
-			'title_left'  => '',
-			'title_right' => '',
+			'title'           => '',
+			'title_left'      => '',
+			'title_right'     => '',
+			'show_split_view' => true,
 		);
-		$args     = wp_parse_args( $args, $defaults );
 
+		$args = wp_parse_args( $args, $defaults );
+
 		if ( ! class_exists( 'WP_Text_Diff_Renderer_Table', false ) ) {
 			require( ABSPATH . WPINC . '/wp-diff.php' );
 		}
@@ -2712,27 +2714,32 @@
 			return '';
 		}
 
-		$r = "<table class='diff'>\n";
+		$is_split_view       = ! empty( $args['show_split_view'] );
+		$is_split_view_class = $is_split_view ? ' is-split-view' : '';
 
-		if ( ! empty( $args['show_split_view'] ) ) {
-			$r .= "<col class='content diffsplit left' /><col class='content diffsplit middle' /><col class='content diffsplit right' />";
-		} else {
-			$r .= "<col class='content' />";
+		$r = "<table class='diff$is_split_view_class'>\n";
+
+		if ( $args['title'] ) {
+			$r .= "<caption class='diff-title'>$args[title]</caption>\n";
 		}
 
-		if ( $args['title'] || $args['title_left'] || $args['title_right'] ) {
+		if ( $args['title_left'] || $args['title_right'] ) {
 			$r .= '<thead>';
 		}
-		if ( $args['title'] ) {
-			$r .= "<tr class='diff-title'><th colspan='4'>$args[title]</th></tr>\n";
-		}
+
 		if ( $args['title_left'] || $args['title_right'] ) {
+			$th_or_td_left  = empty( $args['title_left'] ) ? 'td' : 'th';
+			$th_or_td_right = empty( $args['title_right'] ) ? 'td' : 'th';
+
 			$r .= "<tr class='diff-sub-title'>\n";
-			$r .= "\t<td></td><th>$args[title_left]</th>\n";
-			$r .= "\t<td></td><th>$args[title_right]</th>\n";
+			$r .= "\t<$th_or_td_left>$args[title_left]</$th_or_td_left>\n";
+			if ( $is_split_view ) {
+				$r .= "\t<$th_or_td_right>$args[title_right]</$th_or_td_right>\n";
+			}
 			$r .= "</tr>\n";
 		}
-		if ( $args['title'] || $args['title_left'] || $args['title_right'] ) {
+
+		if ( $args['title_left'] || $args['title_right'] ) {
 			$r .= "</thead>\n";
 		}
 
@@ -2742,4 +2749,3 @@
 		return $r;
 	}
 endif;
-
