Index: wp-admin/includes/plugin.php
===================================================================
--- wp-admin/includes/plugin.php	(revision 17025)
+++ wp-admin/includes/plugin.php	(working copy)
@@ -455,6 +455,21 @@
 }
 
 /**
+ * Check whether the plugin is not network activated.
+ *
+ * Reverse of is_plugin_inactive_for_network(). Used as a callback.
+ *
+ * @since 3.1.0
+ * @see is_plugin_inactive_for_network()
+ *
+ * @param string $plugin Base plugin path from plugins directory.
+ * @return bool True if inactive. False if active.
+ */
+function is_plugin_inactive_for_network( $plugin ) {
+	return ! is_plugin_active_for_network( $plugin );
+}
+
+/**
  * Checks for "Network: true" in the plugin header to see if this should
  * be activated only as a network wide plugin. The plugin would also work
  * when Multisite is not enabled.
@@ -735,18 +750,17 @@
  * @return array invalid plugins, plugin as key, error as value
  */
 function validate_active_plugins() {
-	$plugins = get_option( 'active_plugins', array() );
-	// validate vartype: array
-	if ( ! is_array( $plugins ) ) {
-		update_option( 'active_plugins', array() );
-		$plugins = array();
+	if ( !is_network_admin() ) {
+		$plugins = get_option( 'active_plugins', array() );
+		// validate vartype: array
+		if ( ! is_array( $plugins ) ) {
+			update_option( 'active_plugins', array() );
+			$plugins = array();
+		}
+	} else {
+		$plugins = array_keys( get_site_option( 'active_sitewide_plugins', array() ) );
 	}
 
-	if ( is_multisite() && is_super_admin() ) {
-		$network_plugins = (array) get_site_option( 'active_sitewide_plugins', array() );
-		$plugins = array_merge( $plugins, array_keys( $network_plugins ) );
-	}
-
 	if ( empty( $plugins ) )
 		return;
 
Index: wp-admin/plugins.php
===================================================================
--- wp-admin/plugins.php	(revision 17025)
+++ wp-admin/plugins.php	(working copy)
@@ -195,7 +195,12 @@
 
 			//$_POST = from the plugin form; $_GET = from the FTP details screen.
 			$plugins = isset( $_REQUEST['checked'] ) ? (array) $_REQUEST['checked'] : array();
-			$plugins = array_filter($plugins, 'is_plugin_inactive'); // Do not allow to delete Activated plugins.
+
+			if ( ! is_network_admin() )
+				$plugins = array_filter( $plugins, 'is_plugin_inactive' ); // Do not allow to delete Activated plugins.
+			else
+				$plugins = array_filter( $plugins, 'is_plugin_inactive_for_network' ); // Do not allow to delete Network Activated plugins.
+
 			if ( empty($plugins) ) {
 				wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") );
 				exit;
