Index: wp-includes/default-filters.php
===================================================================
--- wp-includes/default-filters.php	(revision 25621)
+++ wp-includes/default-filters.php	(working copy)
@@ -212,7 +212,7 @@
 add_action( 'wp_head',             'wp_shortlink_wp_head',            10, 0 );
 add_action( 'template_redirect',   'wp_shortlink_header',             11, 0 );
 add_action( 'wp_print_footer_scripts', '_wp_footer_scripts'                 );
-add_action( 'init',                'check_theme_switched',            99    );
+add_action( 'switch_theme',        'check_theme_switched',            99, 4 );
 add_action( 'after_switch_theme',  '_wp_sidebars_changed'                   );
 
 if ( isset( $_GET['replytocom'] ) )
Index: wp-includes/theme.php
===================================================================
--- wp-includes/theme.php	(revision 25621)
+++ wp-includes/theme.php	(working copy)
@@ -706,7 +706,7 @@
 	}
 
 	update_option( 'theme_switched', $old_theme->get_stylesheet() );
-	do_action( 'switch_theme', $new_name, $new_theme );
+	do_action( 'switch_theme', $new_name, $new_theme, $old_theme->get( 'Name' ), $old_theme );
 }
 
 /**
@@ -1634,17 +1634,11 @@
  *
  * @since 3.3.0
  */
-function check_theme_switched() {
-	if ( $stylesheet = get_option( 'theme_switched' ) ) {
-		$old_theme = wp_get_theme( $stylesheet );
-
-		if ( $old_theme->exists() )
-			do_action( 'after_switch_theme', $old_theme->get('Name'), $old_theme );
-		else
-			do_action( 'after_switch_theme', $stylesheet );
-
-		update_option( 'theme_switched', false );
-	}
+function check_theme_switched( $new_name, $new_theme, $old_name, $old_theme ) {
+	if ( $old_theme->exists() )
+		do_action( 'after_switch_theme', $old_theme->get('Name'), $old_theme );
+	else
+		do_action( 'after_switch_theme', $old_name );
 }
 
 /**
