Index: src/wp-admin/js/theme.js
===================================================================
--- src/wp-admin/js/theme.js	(revision 26628)
+++ src/wp-admin/js/theme.js	(working copy)
@@ -282,7 +282,7 @@
 				scroll = document.body.scrollTop;
 
 				// Clean the url structure
-				themes.router.navigate( '' );
+				themes.router.navigate( themes.data.settings.root );
 
 				// Restore scroll position
 				document.body.scrollTop = scroll;
@@ -476,6 +476,10 @@
 		return view;
 	},
 
+	buildNavigation: function( url ) {
+		return themes.data.settings.root + url;
+	},
+
 	// Renders the overlay with the ThemeDetails view
 	// Uses the current model data
 	expand: function( id ) {
@@ -485,7 +489,7 @@
 		this.model = self.collection.get( id );
 
 		// Trigger a route update for the current model
-		themes.router.navigate( 'theme/' + this.model.id );
+		themes.router.navigate( self.buildNavigation( '?theme=' + this.model.id ), { trigger: true, replace: true } );
 
 		// Sets this.view to 'detail'
 		this.setView( 'detail' );
@@ -497,7 +501,11 @@
 		});
 
 		this.overlay.render();
-		this.$el.append( this.overlay.el );
+		if ( 0 === $( 'div.theme-overlay' ).length ) {
+			this.$el.append( this.overlay.el );
+		} else {
+			$( 'div.theme-overlay' ).html( this.overlay.el );
+		}
 
 		this.overlay.screenshotGallery();
 
@@ -540,7 +548,7 @@
 
 			// Trigger a route update for the current model
 			// that renders the new theme's overlay
-			themes.router.navigate( 'theme/' + nextModel.id, { trigger: true } );
+			themes.router.navigate( self.buildNavigation( '?theme=' + nextModel.id ), { trigger: true } );
 		}
 	},
 
@@ -564,7 +572,7 @@
 
 			// Trigger a route update for the current model
 			// that renders the new theme's overlay
-			themes.router.navigate( 'theme/' + previousModel.id, { trigger: true } );
+			themes.router.navigate( self.buildNavigation( '?theme=' + previousModel.id ), { trigger: true } );
 		}
 	}
 });
@@ -598,9 +606,9 @@
 
 		// Update the URL hash
 		if ( event.target.value ) {
-			themes.router.navigate( 'search/' + event.target.value, { replace: true } );
+			themes.router.navigate( themes.data.settings.root + '/search/' + event.target.value, { replace: true } );
 		} else {
-			themes.router.navigate( '' );
+			themes.router.navigate( themes.data.settings.root );
 		}
 	}
 });
@@ -611,7 +619,7 @@
 
 	routes: {
 		'search/*query': 'search',
-		'theme/*slug': 'theme'
+		'*path':         'default'
 	},
 
 	// Set the search input value based on url
@@ -646,11 +654,13 @@
 		this.routes();
 
 		// Set ups history with pushState and our root
-		Backbone.history.start({ root: themes.data.settings.root });
+		if ( window.history && window.history.pushState ) {
+			Backbone.history.start({ pushState: true });
+		}
 	},
 
 	routes: function() {
-		var self = this;
+		var queryvars, self = this;
 		// Bind to our global thx object
 		// so that the object is available to sub-views
 		themes.router = new themes.routes();
@@ -664,7 +674,38 @@
 		themes.router.on( 'route:search', function( query ) {
 			self.themes.doSearch( query );
 		});
-	}
+
+		// Handles default route event
+		themes.router.on( 'route:default', function() {
+			queryvars = self.getURLParams( document.URL );
+			if ( 'undefined' !== typeof queryvars.theme ) {
+				self.view.view.expand( queryvars.theme );
+			}
+		});
+
+	},
+	getURLParams: function( url ) {
+		var base, params, results, i, param,
+			parts = url.split( '?' );
+
+		if ( parts.length === 1 ) {
+			return {};
+		}
+
+		base = parts.shift();
+		params = parts.pop().split( '&' );
+
+		if ( params.length === 1 && params[ 0 ] === '' ) {
+			return {};
+		}
+
+		result = {};
+		for ( i = 0, len = params.length; i < len; i++ ) {
+			param = params[ i ].split( '=' );
+			result[ param[ 0 ] ] = decodeURIComponent( param[ 1 ] );
+		}
+		return result;
+}
 };
 
 // Ready...
Index: src/wp-admin/themes.php
===================================================================
--- src/wp-admin/themes.php	(revision 26628)
+++ src/wp-admin/themes.php	(working copy)
@@ -98,7 +98,7 @@
 		'canInstall'    => ( ! is_multisite() && current_user_can( 'install_themes' ) ),
 		'installURI'    => ( ! is_multisite() && current_user_can( 'install_themes' ) ) ? admin_url( 'theme-install.php' ) : null,
 		'confirmDelete' => __( "Are you sure you want to delete this theme?\n\nClick 'Cancel' to go back, 'OK' to confirm the delete." ),
-		'root'          => admin_url( 'themes.php' ),
+		'root'          => parse_url( admin_url( 'themes.php' ), PHP_URL_PATH ),
 		'extraRoutes'   => '',
 	),
  	'l10n' => array(
