diff --git wp-admin/admin-ajax.php wp-admin/admin-ajax.php
index cef3981..e912aa8 100644
--- wp-admin/admin-ajax.php
+++ wp-admin/admin-ajax.php
@@ -57,11 +57,23 @@ case 'fetch-list' :
 	$current_screen->is_network = 'false' === $current_screen->is_network ? false : true;
 	$current_screen->is_user = 'false' === $current_screen->is_user ? false : true;
 
-	$wp_list_table = get_list_table( $_GET['list_args']['class'] );
-	if ( ! $wp_list_table )
-		die( '0' );
+	if ( $current_screen->id == 'dashboard' ) {
+		require_once( ABSPATH . 'wp-admin/includes/dashboard.php' );
+		
+		ob_start();
+		wp_dashboard_recent_comments( true );
+		$rows = ob_get_clean();
+		
+		$response = array( 'rows' => $rows );
+		die( json_encode( $response ) );
+		exit;
+	} else {
+		$wp_list_table = get_list_table( $_GET['list_args']['class'] );
+		if ( ! $wp_list_table )
+			die( '0' );
 
-	$wp_list_table->ajax_response();
+		$wp_list_table->ajax_response();
+	}
 
 	die( '0' );
 	break;
diff --git wp-admin/includes/dashboard.php wp-admin/includes/dashboard.php
index fc5ca47..6ba49fb 100644
--- wp-admin/includes/dashboard.php
+++ wp-admin/includes/dashboard.php
@@ -593,7 +593,7 @@ function wp_dashboard_recent_drafts( $drafts = false ) {
  *
  * @since 2.5.0
  */
-function wp_dashboard_recent_comments() {
+function wp_dashboard_recent_comments( $refill = false ) {
 	global $wpdb;
 
 	if ( current_user_can('edit_posts') )
@@ -604,43 +604,70 @@ function wp_dashboard_recent_comments() {
 	// Select all comment types and filter out spam later for better query performance.
 	$comments = array();
 	$start = 0;
-
 	$widgets = get_option( 'dashboard_widget_options' );
-	$total_items = isset( $widgets['dashboard_recent_comments'] ) && isset( $widgets['dashboard_recent_comments']['items'] )
+	$comments_shown = isset( $widgets['dashboard_recent_comments'] ) && isset( $widgets['dashboard_recent_comments']['items'] )
 		? absint( $widgets['dashboard_recent_comments']['items'] ) : 5;
+	
+	if ( $refill ) {
+		$total_items = 1; // only needs to fetch 1 to refill the river
+		$offset = $comments_shown + 2; // comments being shown plus 3 in the extra list minus 1 just deleted / spammed
+	} else {
+		$total_items = $comments_shown + 3; // extra items for the river
+	}
 
-	while ( count( $comments ) < 5 && $possible = $wpdb->get_results( "SELECT * FROM $wpdb->comments c LEFT JOIN $wpdb->posts p ON c.comment_post_ID = p.ID WHERE p.post_status != 'trash' ORDER BY c.comment_date_gmt DESC LIMIT $start, 50" ) ) {
+	while ( count( $comments ) < $total_items && $possible = $wpdb->get_results( "SELECT * FROM $wpdb->comments c LEFT JOIN $wpdb->posts p ON c.comment_post_ID = p.ID WHERE p.post_status != 'trash' ORDER BY c.comment_date_gmt DESC LIMIT $start, 50" ) ) {
 
 		foreach ( $possible as $comment ) {
 			if ( count( $comments ) >= $total_items )
 				break;
-			if ( in_array( $comment->comment_approved, $allowed_states ) && current_user_can( 'read_post', $comment->comment_post_ID ) )
+			if ( in_array( $comment->comment_approved, $allowed_states ) && current_user_can( 'read_post', $comment->comment_post_ID ) ) {
+				// skip if we're refilling, and this comment is already shown
+				if ( $refill && $offset > 0 ) {
+					$offset --;
+					continue;
+				}
+				
 				$comments[] = $comment;
+			}
 		}
 
 		$start = $start + 50;
 	}
 
 	if ( $comments ) :
+		if ( $refill ) :
+			_wp_dashboard_recent_comments_row( $comments[0] );
+		else : // $refill
 ?>
-
-		<div id="the-comment-list" class="list:comment">
+			<div id="the-comment-list" class="list:comment">
 <?php
-		foreach ( $comments as $comment )
-			_wp_dashboard_recent_comments_row( $comment );
+			$i = 0;
+			while ( $i < $comments_shown ) {
+				_wp_dashboard_recent_comments_row( $comments[$i] );
+				$i++;
+			}
 ?>
 
-		</div>
+			</div>
+		
+			<div id="the-extra-comment-list" class="list:comment" style="display:none">
+				<?php
+					while ( $i < $total_items ) {
+						_wp_dashboard_recent_comments_row( $comments[$i] );
+						$i++;
+					}
+				?>
+			</div>
 
 <?php
-		if ( current_user_can('edit_posts') ) { ?>
-			<p class="textright"><a href="edit-comments.php" class="button"><?php _e('View all'); ?></a></p>
+			if ( current_user_can('edit_posts') ) { ?>
+				<p class="textright"><a href="edit-comments.php" class="button"><?php _e('View all'); ?></a></p>
 <?php	}
 
-		wp_comment_reply( -1, false, 'dashboard', false );
-		wp_comment_trashnotice();
-
-	else :
+			wp_comment_reply( -1, false, 'dashboard', false );
+			wp_comment_trashnotice();
+		endif; // $refill
+	else :// $comments
 ?>
 
 	<p><?php _e( 'No comments yet.' ); ?></p>
diff --git wp-admin/js/edit-comments.dev.js wp-admin/js/edit-comments.dev.js
index 76bcc79..27f6418 100644
--- wp-admin/js/edit-comments.dev.js
+++ wp-admin/js/edit-comments.dev.js
@@ -215,20 +215,21 @@ setCommentsList = function() {
 	
 	var refillTheExtraList = function(ev) {
 		var args = $.query.get(), total_pages = listTable.get_total_pages(), per_page = $('input[name=_per_page]', '#comments-form').val();
-		
-		if (args.paged > total_pages) {
-			return;
-		}
 
-		if (ev) {
-			theExtraList.empty();
-			args.number = Math.min(8, per_page); // see WP_Comments_List_Table::prepare_items() @ class-wp-comments-list-table.php
-		} else {
-			args.number = 1;
-			args.offset = per_page - 1; // fetch only the last item of the next page
+		if (total_pages && args.paged > total_pages) {
+			return;
 		}
 		
-		args.paged ++;
+		if (pagenow != 'dashboard') {
+			if (ev) {
+				theExtraList.empty();
+				args.number = Math.min(8, per_page); // see WP_Comments_List_Table::prepare_items() @ class-wp-comments-list-table.php
+			} else {
+				args.number = 1;
+				args.offset = per_page - 1; // fetch only the last item of the next page
+			}
+			args.paged ++;
+		}
 
 		listTable.fetch_list(args, function(response) {
 			theExtraList.get(0).wpList.add( response.rows );
