Index: src/wp-activate.php
===================================================================
--- src/wp-activate.php	(revision 53687)
+++ src/wp-activate.php	(working copy)
@@ -11,8 +11,12 @@
 /** Sets up the WordPress Environment. */
 require __DIR__ . '/wp-load.php';
 
-require __DIR__ . '/wp-blog-header.php';
+wp( array(
+	'pre_query_page' => 'wp-activate',
+) );
 
+require ABSPATH . WPINC . '/template-loader.php';
+
 if ( ! is_multisite() ) {
 	wp_redirect( wp_registration_url() );
 	die();
@@ -68,9 +72,6 @@
 	$wp_object_cache->cache_enabled = false;
 }
 
-// Fix for page title.
-$wp_query->is_404 = false;
-
 /**
  * Fires before the Site Activation page is loaded.
  *
@@ -105,8 +106,9 @@
 function wpmu_activate_stylesheet() {
 	?>
 	<style type="text/css">
+		#signup-content { width: 90%; margin:0 auto; }
 		form { margin-top: 2em; }
-		#submit, #key { width: 90%; font-size: 24px; }
+		#submit, #key { width: 100%; font-size: 24px; }
 		#language { margin-top: .5em; }
 		.error { background: #f66; }
 		span.h3 { padding: 0 8px; font-size: 1.3em; font-weight: 600; }
Index: src/wp-includes/class-wp-query.php
===================================================================
--- src/wp-includes/class-wp-query.php	(revision 53687)
+++ src/wp-includes/class-wp-query.php	(working copy)
@@ -577,6 +577,7 @@
 			'fields',
 			'menu_order',
 			'embed',
+			'pre_query_page',
 		);
 
 		foreach ( $keys as $key ) {
@@ -1777,6 +1778,46 @@
 	}
 
 	/**
+	 * Retrieves the posts for the Multisite signup and activate pages.
+	 *
+	 * @access public
+	 *
+	 * @return array List of posts.
+	 */
+	public function posts_pre_query() {
+		$pre_query_page = $this->get( 'pre_query_page' );
+
+		if ( ! $pre_query_page ) {
+			return null;
+		}
+
+		$pre_query_pages = array(
+			'wp-signup'   => __( 'Register' ),
+			'wp-activate' => __( 'Activate' ),
+		);
+
+		if ( ! isset( $pre_query_pages[ $pre_query_page ] ) ) {
+			return null;
+		}
+
+		$post = new stdClass;
+		$post->ID         = 0;
+		$post->post_name  = $pre_query_page;
+		$post->post_title = $pre_query_pages[ $pre_query_page ];
+
+		// Set the queried object to avoid notices.
+		$this->queried_object    = get_post( $post );
+		$this->queried_object_id = $post->ID;
+
+		// Reset query flags.
+		$this->init_query_flags();
+		$this->is_singular = true;
+
+		// Return the posts.
+		return array( $post );
+	}
+
+	/**
 	 * Retrieves an array of posts based on query variables.
 	 *
 	 * There are a few filters and actions that can be used to modify the post
@@ -3058,7 +3099,7 @@
 		 *                                    or null to allow WP to run its normal queries.
 		 * @param WP_Query             $query The WP_Query instance (passed by reference).
 		 */
-		$this->posts = apply_filters_ref_array( 'posts_pre_query', array( null, &$this ) );
+		$this->posts = apply_filters_ref_array( 'posts_pre_query', array( $this->posts_pre_query(), &$this ) );
 
 		if ( 'ids' === $q['fields'] ) {
 			if ( null === $this->posts ) {
Index: src/wp-includes/class-wp.php
===================================================================
--- src/wp-includes/class-wp.php	(revision 53687)
+++ src/wp-includes/class-wp.php	(working copy)
@@ -24,7 +24,7 @@
 	 * @since 2.0.0
 	 * @var string[]
 	 */
-	public $private_query_vars = array( 'offset', 'posts_per_page', 'posts_per_archive_page', 'showposts', 'nopaging', 'post_type', 'post_status', 'category__in', 'category__not_in', 'category__and', 'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'tag_id', 'post_mime_type', 'perm', 'comments_per_page', 'post__in', 'post__not_in', 'post_parent', 'post_parent__in', 'post_parent__not_in', 'title', 'fields' );
+	public $private_query_vars = array( 'offset', 'posts_per_page', 'posts_per_archive_page', 'showposts', 'nopaging', 'post_type', 'post_status', 'category__in', 'category__not_in', 'category__and', 'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'tag_id', 'post_mime_type', 'perm', 'comments_per_page', 'post__in', 'post__not_in', 'post_parent', 'post_parent__in', 'post_parent__not_in', 'title', 'fields', 'pre_query_page' );
 
 	/**
 	 * Extra query variables set by the user.
Index: src/wp-signup.php
===================================================================
--- src/wp-signup.php	(revision 53687)
+++ src/wp-signup.php	(working copy)
@@ -5,8 +5,12 @@
 
 add_filter( 'wp_robots', 'wp_robots_no_robots' );
 
-require __DIR__ . '/wp-blog-header.php';
+wp( array(
+	'pre_query_page' => 'wp-signup',
+) );
 
+require ABSPATH . WPINC . '/template-loader.php';
+
 nocache_headers();
 
 if ( is_array( get_site_option( 'illegal_names' ) ) && isset( $_GET['new'] ) && in_array( $_GET['new'], get_site_option( 'illegal_names' ), true ) ) {
@@ -39,9 +43,6 @@
 	die();
 }
 
-// Fix for page title.
-$wp_query->is_404 = false;
-
 /**
  * Fires before the Site Sign-up page is loaded.
  *
