Index: src/wp-admin/css/forms.css
===================================================================
--- src/wp-admin/css/forms.css	(revision 29481)
+++ src/wp-admin/css/forms.css	(working copy)
@@ -759,9 +759,77 @@
 	margin: -3px 3px;
 }
 
+/*------------------------------------------------------------------------------
+  21.0 - Upload File
+------------------------------------------------------------------------------*/
+
+.wp-upload-container {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	margin: 0px 0 0;
+	padding: 0;
+	width: 100%;
+	overflow: hidden;
+	position: relative;
+	top: 10px;
+}
+
+.wp-upload-container-toggle {
+	display: none;
+}
+
+.wp-upload-container .wp-upload-form {
+	background: #fafafa;
+	border: 1px solid #e5e5e5;
+	padding: 30px;
+	margin: 30px auto;
+	max-width: 380px;
+}
+
+.wp-upload-container .install-help {
+	color: #999;
+	font-size: 18px;
+	font-style: normal;
+	margin: 0;
+	padding: 40px 0 0;
+	text-align: center;
+}
+
+body.show-upload-container .hide-on-upload,
+body.show-upload-container .wp-upload-show {
+	display: none;
+}
+
+body.show-upload-container .wp-upload-container-toggle {
+	display: block;
+}
+
+.wp-upload-hide {
+	display: none;
+}
+
+body.show-upload-container .wp-upload-hide {
+	display: inline;
+}
+
 /* =Media Queries
 -------------------------------------------------------------- */
 
+@media only screen and (max-width: 1120px) {
+	.wp-upload-container .wp-upload-form {
+		margin: 20px 0;
+		max-width: 100%;
+	}
+
+	.wp-upload-container .install-help {
+		font-size: 15px;
+		padding: 20px 0 0;
+		text-align: left;
+	}
+
+}
+
 @media screen and ( max-width: 782px ) {
 	/* Input Elements */
 	textarea {
Index: src/wp-admin/css/themes.css
===================================================================
--- src/wp-admin/css/themes.css	(revision 29481)
+++ src/wp-admin/css/themes.css	(working copy)
@@ -1071,52 +1071,6 @@
 	display: none !important;
 }
 
-.theme-install-php a.upload,
-.theme-install-php a.browse-themes {
-	cursor: pointer;
-}
-.theme-install-php a.browse-themes,
-.theme-install-php.show-upload-theme a.upload {
-	display: none;
-}
-.theme-install-php.show-upload-theme a.browse-themes {
-	display: inline;
-}
-.upload-theme {
-	-webkit-box-sizing: border-box;
-	-moz-box-sizing: border-box;
-	box-sizing: border-box;
-	display: none;
-	margin: 0;
-	padding: 0;
-	width: 100%;
-	overflow: hidden;
-	position: relative;
-	top: 10px;
-}
-body.show-upload-theme .upload-theme {
-	display: block;
-}
-.upload-theme .wp-upload-form {
-	background: #fafafa;
-	border: 1px solid #e5e5e5;
-	padding: 30px;
-	margin: 30px auto;
-	max-width: 380px;
-}
-.upload-theme .install-help {
-	color: #999;
-	font-size: 18px;
-	font-style: normal;
-	margin: 0;
-	padding: 40px 0 0;
-	text-align: center;
-}
-body.show-upload-theme .upload-theme + .wp-filter,
-body.show-upload-theme .upload-theme + .wp-filter + .theme-browser {
-	display: none;
-}
-
 p.no-themes {
 	color: #999;
 	font-size: 18px;
@@ -1129,7 +1083,7 @@
 body.no-results p.no-themes {
 	display: block;
 }
-body.show-upload-theme p.no-themes {
+body.show-upload-container p.no-themes {
 	display: none !important;
 }
 
@@ -1137,18 +1091,6 @@
 	display: none !important;
 }
 
-@media only screen and (max-width: 1120px) {
-	.upload-theme .wp-upload-form {
-		margin: 20px 0;
-		max-width: 100%;
-	}
-	.upload-theme .install-help {
-		font-size: 15px;
-		padding: 20px 0 0;
-		text-align: left;
-	}
-}
-
 .rating {
 	margin: 30px 0;
 }
Index: src/wp-admin/includes/class-wp-plugin-install-list-table.php
===================================================================
--- src/wp-admin/includes/class-wp-plugin-install-list-table.php	(revision 29481)
+++ src/wp-admin/includes/class-wp-plugin-install-list-table.php	(working copy)
@@ -215,7 +215,7 @@
 		$views = apply_filters( "views_{$this->screen->id}", $views );
 
 ?>
-<div class="wp-filter">
+<div class="wp-filter hide-on-upload">
 	<ul class="wp-filter-links">
 		<?php
 		if ( ! empty( $views ) ) {
Index: src/wp-admin/includes/plugin-install.php
===================================================================
--- src/wp-admin/includes/plugin-install.php	(revision 29481)
+++ src/wp-admin/includes/plugin-install.php	(working copy)
@@ -196,14 +196,15 @@
  */
 function install_plugins_upload( $page = 1 ) {
 ?>
-	<h4><?php _e('Install a plugin in .zip format'); ?></h4>
-	<p class="install-help"><?php _e('If you have a plugin in a .zip format, you may install it by uploading it here.'); ?></p>
-	<form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo self_admin_url('update.php?action=upload-plugin'); ?>">
-		<?php wp_nonce_field( 'plugin-upload'); ?>
-		<label class="screen-reader-text" for="pluginzip"><?php _e('Plugin zip file'); ?></label>
-		<input type="file" id="pluginzip" name="pluginzip" />
-		<?php submit_button( __( 'Install Now' ), 'button', 'install-plugin-submit', false ); ?>
-	</form>
+	<div class="wp-upload-container">
+		<p class="install-help"><?php _e( 'If you have a plugin in a .zip format, you may install it by uploading it here.' ); ?></p>
+		<form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo self_admin_url( 'update.php?action=upload-plugin' ); ?>">
+			<?php wp_nonce_field( 'plugin-upload' ); ?>
+			<label class="screen-reader-text" for="pluginzip"><?php _e( 'Plugin zip file' ); ?></label>
+			<input type="file" id="pluginzip" name="pluginzip" />
+			<?php submit_button( __( 'Install Now' ), 'button', 'install-plugin-submit', false ); ?>
+		</form>
+	</div>
 <?php
 }
 add_action('install_plugins_upload', 'install_plugins_upload', 10, 1);
Index: src/wp-admin/includes/theme-install.php
===================================================================
--- src/wp-admin/includes/theme-install.php	(revision 29481)
+++ src/wp-admin/includes/theme-install.php	(working copy)
@@ -136,13 +136,15 @@
 
 function install_themes_upload() {
 ?>
-<p class="install-help"><?php _e('If you have a theme in a .zip format, you may install it by uploading it here.'); ?></p>
-<form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo self_admin_url('update.php?action=upload-theme'); ?>">
-	<?php wp_nonce_field( 'theme-upload'); ?>
-	<input type="file" name="themezip" />
-	<?php submit_button( __( 'Install Now' ), 'button', 'install-theme-submit', false ); ?>
-</form>
-	<?php
+	<div class="wp-upload-container wp-upload-container-toggle">
+		<p class="install-help"><?php _e( 'If you have a theme in a .zip format, you may install it by uploading it here.' ); ?></p>
+		<form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo self_admin_url( 'update.php?action=upload-theme' ); ?>">
+			<?php wp_nonce_field( 'theme-upload' ); ?>
+			<input type="file" name="themezip" />
+			<?php submit_button( __( 'Install Now' ), 'button', 'install-theme-submit', false ); ?>
+		</form>
+	</div>
+<?php
 }
 // add_action('install_themes_upload', 'install_themes_upload', 10, 0);
 
Index: src/wp-admin/js/theme.js
===================================================================
--- src/wp-admin/js/theme.js	(revision 29481)
+++ src/wp-admin/js/theme.js	(working copy)
@@ -1497,14 +1497,14 @@
 	searchContainer: $( '.wp-filter' ),
 
 	uploader: function() {
-		$( 'a.upload' ).on( 'click', function( event ) {
+		$( '.wp-upload-show' ).on( 'click', function( event ) {
 			event.preventDefault();
-			$( 'body' ).addClass( 'show-upload-theme' );
+			$( 'body' ).addClass( 'show-upload-container' );
 			themes.router.navigate( themes.router.baseUrl( '?upload' ), { replace: true } );
 		});
-		$( 'a.browse-themes' ).on( 'click', function( event ) {
+		$( '.wp-upload-hide' ).on( 'click', function( event ) {
 			event.preventDefault();
-			$( 'body' ).removeClass( 'show-upload-theme' );
+			$( 'body' ).removeClass( 'show-upload-container' );
 			themes.router.navigate( themes.router.baseUrl( '' ), { replace: true } );
 		});
 	},
@@ -1642,7 +1642,7 @@
 
 		// Support the `upload` route by going straight to upload section
 		themes.router.on( 'route:upload', function() {
-			$( 'a.upload' ).trigger( 'click' );
+			$( '.wp-upload-show' ).trigger( 'click' );
 		});
 
 		// The `search` route event. The router populates the input field.
Index: src/wp-admin/plugin-install.php
===================================================================
--- src/wp-admin/plugin-install.php	(revision 29481)
+++ src/wp-admin/plugin-install.php	(working copy)
@@ -67,6 +67,16 @@
 	'<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
+function _wp_add_upload_container_class( $classes ) {
+	global $tab;
+
+	$class = ( 'upload' === $tab ) ? ' show-upload-container' : ' hide-upload-container';
+
+	return $classes . $class;
+}
+
+add_filter( 'admin_body_class', '_wp_add_upload_container_class' );
+
 /**
  * WordPress Administration Template Header.
  */
@@ -75,15 +85,22 @@
 <div class="wrap">
 <h2>
 	<?php
-		echo esc_html( $title );
-		$href = self_admin_url( 'plugin-install.php?tab=upload' );
+	echo esc_html( $title );
+
+	if ( 'upload' === $tab ) {
+		?>
+		<a href="<?php echo esc_url( self_admin_url( 'plugin-install.php' ) ); ?>" class="browse-plugins add-new-h2"><?php _ex( 'Browse', 'plugins' ); ?></a>
+		<?php
+	} else {
+		?>
+		<a href="<?php echo esc_url( self_admin_url( 'plugin-install.php?tab=upload' ) ); ?>" class="upload add-new-h2"><?php _e( 'Upload Plugin' ); ?></a>
+		<?php
+	}
 	?>
-	<a href="<?php echo $href; ?>" class="upload add-new-h2"><?php _e( 'Upload Plugin' ); ?></a>
 </h2>
 
 <?php $wp_list_table->views(); ?>
 
-<br class="clear" />
 <?php
 /**
  * Fires after the plugins list table in each tab of the Install Plugins screen.
Index: src/wp-admin/theme-install.php
===================================================================
--- src/wp-admin/theme-install.php	(revision 29481)
+++ src/wp-admin/theme-install.php	(working copy)
@@ -118,23 +118,28 @@
 		<?php
 		/**
 		 * Filter the tabs shown on the Install Themes screen.
-		 * 
+		 *
 		 * @since 2.8.0
 		 * @param array $tabs The tabs shown on the Install Themes screen. Defaults are
 		 *                    'upload' and 'browse-themes'.
 		 */
 		$tabs = apply_filters( 'install_themes_tabs', $tabs );
 		foreach ( $tabs as $tab_slug => $tab_name ) {
-			echo '<a href="#" class="' . esc_attr( $tab_slug ) . ' add-new-h2">' . $tab_name . '</a>';
+			$visibility = '';
+			if ( 'upload' === $tab_slug ) {
+				$visibility = ' wp-upload-show';
+			} else if ( 'browse-themes' === $tab_slug ) {
+				$visibility = ' wp-upload-hide';
+			}
+
+			echo '<a href="#" class="' . esc_attr( $tab_slug ) . $visibility . ' add-new-h2">' . $tab_name . '</a>';
 		}
 		?>
 	</h2>
 
-	<div class="upload-theme">
 	<?php install_themes_upload(); ?>
-	</div>
 
-	<div class="wp-filter">
+	<div class="wp-filter hide-on-upload">
 		<div class="wp-filter-count">
 			<span class="count theme-count"></span>
 		</div>
@@ -179,12 +184,15 @@
 			</div>
 		</div>
 	</div>
-	<div class="theme-browser wp-filter-content"></div>
-	<div class="theme-install-overlay wp-full-overlay expanded"></div>
 
-	<p class="no-themes"><?php _e( 'No themes found. Try a different search.' ); ?></p>
-	<span class="spinner"></span>
+	<div class="hide-on-upload">
+		<div class="theme-browser wp-filter-content"></div>
+		<div class="theme-install-overlay wp-full-overlay expanded"></div>
 
+		<p class="no-themes"><?php _e( 'No themes found. Try a different search.' ); ?></p>
+		<span class="spinner"></span>
+	</div>
+
 	<br class="clear" />
 <?php
 /**
