Index: src/wp-admin/css/dashboard.css
===================================================================
--- src/wp-admin/css/dashboard.css	(revision 36269)
+++ src/wp-admin/css/dashboard.css	(working copy)
@@ -688,7 +688,7 @@
 
 #activity-widget #the-comment-list .avatar {
 	position: absolute;
-	top: 13px;
+	top: 12px;
 }
 
 #activity-widget #the-comment-list .dashboard-comment-wrap {
@@ -801,7 +801,11 @@
 }
 
 #activity-widget #latest-comments #the-comment-list .comment-item {
-	padding: 1em 12px;
+	/* the row-actions paragraph is output only for users with 'edit_comment' capabilities,
+	   for other users this needs a min height equal to the gravatar image */
+	min-height: 50px;
+	margin: 0;
+	padding: 12px;
 }
 
 #latest-comments #the-comment-list .pingback {
Index: src/wp-admin/css/list-tables.css
===================================================================
--- src/wp-admin/css/list-tables.css	(revision 36269)
+++ src/wp-admin/css/list-tables.css	(working copy)
@@ -896,7 +896,7 @@
 tr:hover .row-actions,
 .mobile .row-actions,
 .row-actions.visible,
-div.comment-item:hover .row-actions {
+.comment-item:hover .row-actions {
 	position: static;
 }
 
Index: src/wp-admin/includes/dashboard.php
===================================================================
--- src/wp-admin/includes/dashboard.php	(revision 36269)
+++ src/wp-admin/includes/dashboard.php	(working copy)
@@ -574,12 +574,20 @@
 function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
 	$GLOBALS['comment'] = clone $comment;
 
-	if ( $comment->comment_post_ID > 0 && current_user_can( 'edit_post', $comment->comment_post_ID ) ) {
+	if ( $comment->comment_post_ID > 0 ) {
+
 		$comment_post_title = _draft_or_post_title( $comment->comment_post_ID );
-		$comment_post_url = get_edit_post_link( $comment->comment_post_ID );
-		$comment_post_link = "<a href='$comment_post_url'>$comment_post_title</a>";
+
+		if ( current_user_can( 'edit_post', $comment->comment_post_ID ) ) {
+			$comment_post_url = get_edit_post_link( $comment->comment_post_ID );
+			$comment_post_link_or_title = "<a href='$comment_post_url'>$comment_post_title</a>";
+		} else {
+			// translators: %s: post title
+			$comment_post_link_or_title = sprintf( __( '&#8220;%s&#8221;' ), $comment_post_title );
+		}
+
 	} else {
-		$comment_post_link = '';
+		$comment_post_link_or_title = '';
 	}
 
 	$actions_string = '';
@@ -644,10 +652,9 @@
 			$actions_string .= "<span class='$action'>$sep$link</span>";
 		}
 	}
-
 ?>
 
-		<div id="comment-<?php echo $comment->comment_ID; ?>" <?php comment_class( array( 'comment-item', wp_get_comment_status( $comment ) ), $comment ); ?>>
+		<li id="comment-<?php echo $comment->comment_ID; ?>" <?php comment_class( array( 'comment-item', wp_get_comment_status( $comment ) ), $comment ); ?>>
 
 			<?php echo get_avatar( $comment, 50, 'mystery' ); ?>
 
@@ -655,24 +662,15 @@
 
 			<div class="dashboard-comment-wrap has-row-actions">
 			<p class="comment-meta">
-				<?php
-				if ( $comment_post_link ) {
-					printf(
-						/* translators: 1: comment author, 2: post link, 3: notification if the comment is pending */
-						__( 'From %1$s on %2$s%3$s' ),
-						'<cite class="comment-author">' . get_comment_author_link( $comment ) . '</cite>',
-						$comment_post_link,
-						' <span class="approve">' . __( '[Pending]' ) . '</span>'
-					);
-				} else {
-					printf(
-						/* translators: 1: comment author, 2: notification if the comment is pending */
-						__( 'From %1$s %2$s' ),
-						'<cite class="comment-author">' . get_comment_author_link( $comment ) . '</cite>',
-						' <span class="approve">' . __( '[Pending]' ) . '</span>'
-					);
-				}
-				?>
+			<?php
+				printf(
+					/* translators: 1: comment author, 2: post title, 3: notification if the comment is pending */
+					__( 'From %1$s on %2$s%3$s' ),
+					'<cite class="comment-author">' . get_comment_author_link( $comment ) . '</cite>',
+					$comment_post_link_or_title,
+					' <span class="approve" aria-hidden="true">' . __( '[Pending]' ) . '</span>'
+				);
+			?>
 			</p>
 
 			<?php
@@ -690,15 +688,22 @@
 				$type = esc_html( $type );
 			?>
 			<div class="dashboard-comment-wrap has-row-actions">
-			<?php /* translators: %1$s is type of comment, %2$s is link to the post */ ?>
-			<p class="comment-meta"><?php printf( _x( '%1$s on %2$s', 'dashboard' ), "<strong>$type</strong>", $comment_post_link ); ?></p>
+			<p class="comment-meta">
+			<?php
+				/* translators: 1: type of comment, 2: post link or title */
+				printf( _x( '%1$s on %2$s', 'dashboard' ), "<strong>$type</strong>", $comment_post_link_or_title );
+			?>
+			</p>
 			<p class="comment-author"><?php comment_author_link( $comment ); ?></p>
 
 			<?php endif; // comment_type ?>
+
 			<blockquote><p><?php comment_excerpt( $comment ); ?></p></blockquote>
+			<?php if ( $actions_string ) : ?>
 			<p class="row-actions"><?php echo $actions_string; ?></p>
+			<?php endif; ?>
 			</div>
-		</div>
+		</li>
 <?php
 	$GLOBALS['comment'] = null;
 }
@@ -868,15 +873,17 @@
 
 	if ( $comments ) {
 		echo '<div id="latest-comments" class="activity-block">';
-		echo '<h3>' . __( 'Comments' ) . '</h3>';
+		echo '<h3>' . __( 'Recent Comments' ) . '</h3>';
 
-		echo '<div id="the-comment-list" data-wp-lists="list:comment">';
+		echo '<ul id="the-comment-list" data-wp-lists="list:comment">';
 		foreach ( $comments as $comment )
 			_wp_dashboard_recent_comments_row( $comment );
-		echo '</div>';
+		echo '</ul>';
 
-		if ( current_user_can('edit_posts') )
-			_get_list_table('WP_Comments_List_Table')->views();
+		if ( current_user_can( 'edit_posts' ) ) {
+			echo '<h4 class="screen-reader-text">' . __( 'View more comments' ) . '</h4>';
+			_get_list_table( 'WP_Comments_List_Table' )->views();
+		}
 
 		wp_comment_reply( -1, false, 'dashboard', false );
 		wp_comment_trashnotice();
