Index: wp-admin/admin-ajax.php
===================================================================
--- wp-admin/admin-ajax.php	(revision 19180)
+++ wp-admin/admin-ajax.php	(working copy)
@@ -1064,10 +1064,7 @@
 	if ( ! current_user_can( 'edit_theme_options' ) )
 		die('-1');
 
-	if ( empty( $_POST['visible'] ) )
-		delete_user_option( get_current_user_id(), 'show_welcome_panel' );
-	else
-		update_user_option( get_current_user_id(), 'show_welcome_panel', 1 );
+	update_user_meta( get_current_user_id(), 'show_welcome_panel', empty( $_POST['visible'] ) ? 0 : 1 );
 
 	die('1');
 	break;
Index: wp-admin/includes/dashboard.php
===================================================================
--- wp-admin/includes/dashboard.php	(revision 19180)
+++ wp-admin/includes/dashboard.php	(working copy)
@@ -1272,7 +1272,10 @@
 
 	$classes = 'welcome-panel';
 
-	if ( ! get_user_option( 'show_welcome_panel' ) )
+	$option = get_user_meta( get_current_user_id(), 'show_welcome_panel', true );
+	// 0 = hide, 1 = toggled to show or single site creator, 2 = multisite site owner
+	$hide = 0 == $option || ( 2 == $option && wp_get_current_user()->user_email != get_option( 'admin_email' ) );
+	if ( $hide )
 		$classes .= ' hidden';
 
 	list( $display_version ) = explode( '-', $wp_version );
Index: wp-admin/includes/upgrade.php
===================================================================
--- wp-admin/includes/upgrade.php	(revision 19180)
+++ wp-admin/includes/upgrade.php	(working copy)
@@ -283,6 +283,11 @@
 	update_option( 'widget_meta', array ( 2 => array ( 'title' => '' ), '_multiwidget' => 1 ) );
 	update_option( 'sidebars_widgets', array ( 'wp_inactive_widgets' => array ( ), 'sidebar-1' => array ( 0 => 'search-2', 1 => 'recent-posts-2', 2 => 'recent-comments-2', 3 => 'archives-2', 4 => 'categories-2', 5 => 'meta-2', ), 'sidebar-2' => array ( ), 'sidebar-3' => array ( ), 'sidebar-4' => array ( ), 'sidebar-5' => array ( ), 'array_version' => 3 ) );
 
+	if ( ! is_multisite() )
+		update_user_meta( $user_id, 'show_welcome_panel', 1 );
+	elseif ( ! is_super_admin( $user_id ) && ! metadata_exists( 'user', $user_id, 'show_welcome_panel' ) )
+		update_user_meta( $user_id, 'show_welcome_panel', 2 );
+
 	if ( is_multisite() ) {
 		// Flush rules to pick up the new page.
 		$wp_rewrite->init();
Index: wp-admin/includes/screen.php
===================================================================
--- wp-admin/includes/screen.php	(revision 19180)
+++ wp-admin/includes/screen.php	(working copy)
@@ -811,8 +811,11 @@
 					meta_box_prefs( $this );
 
 					if ( 'dashboard' === $this->id && current_user_can( 'edit_theme_options' ) ) {
+						$welcome_checked = get_user_meta( get_current_user_id(), 'show_welcome_panel', true );
+						if ( 2 == $welcome_checked && wp_get_current_user()->user_email != get_option( 'admin_email' ) )
+							$welcome_checked = false;
 						echo '<label for="wp_welcome_panel-hide">';
-						echo '<input type="checkbox" id="wp_welcome_panel-hide"' . checked( (bool) get_user_option( 'show_welcome_panel' ), true, false )  . ' />';
+						echo '<input type="checkbox" id="wp_welcome_panel-hide"' . checked( (bool) $welcome_checked, true, false )  . ' />';
 						echo __( 'Welcome' ) . "</label>\n";
 					}
 				?>
