diff --git src/wp-activate.php src/wp-activate.php
index b13279a..412421d 100644
--- src/wp-activate.php
+++ src/wp-activate.php
@@ -11,7 +11,11 @@ define( 'WP_INSTALLING', true );
 /** Sets up the WordPress Environment. */
 require( dirname(__FILE__) . '/wp-load.php' );
 
-require( dirname( __FILE__ ) . '/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() );
@@ -21,9 +25,6 @@ if ( !is_multisite() ) {
 if ( is_object( $wp_object_cache ) )
 	$wp_object_cache->cache_enabled = false;
 
-// Fix for page title
-$wp_query->is_404 = false;
-
 /**
  * Fires before the Site Activation page is loaded.
  *
@@ -58,8 +59,9 @@ add_action( 'wp_head', 'do_activate_header' );
 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: bold; }
diff --git src/wp-includes/class-wp-query.php src/wp-includes/class-wp-query.php
index eb68f21..5ef7688 100644
--- src/wp-includes/class-wp-query.php
+++ src/wp-includes/class-wp-query.php
@@ -610,6 +610,7 @@ class WP_Query {
 			, 'fields'
 			, 'menu_order'
 			, 'embed'
+			, 'pre_query_page'
 		);
 
 		foreach ( $keys as $key ) {
@@ -1654,6 +1655,46 @@ class WP_Query {
 	}
 
 	/**
+	 * Retrieve 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 );
+	}
+
+	/**
 	 * Retrieve the posts based on query variables.
 	 *
 	 * There are a few filters and actions that can be used to modify the post
@@ -2770,7 +2811,7 @@ class WP_Query {
 		 *                          or null to allow WP to run its normal queries.
 		 * @param WP_Query   $this  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 ) {
diff --git src/wp-includes/class-wp.php src/wp-includes/class-wp.php
index c62d790..13ce3ce 100644
--- src/wp-includes/class-wp.php
+++ src/wp-includes/class-wp.php
@@ -26,7 +26,7 @@ class WP {
 	 * @access public
 	 * @var array
 	 */
-	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.
diff --git src/wp-signup.php src/wp-signup.php
index 156de61..742239f 100644
--- src/wp-signup.php
+++ src/wp-signup.php
@@ -5,7 +5,11 @@ require( dirname(__FILE__) . '/wp-load.php' );
 
 add_action( 'wp_head', 'wp_no_robots' );
 
-require( dirname( __FILE__ ) . '/wp-blog-header.php' );
+wp( array(
+	'pre_query_page' => 'wp-signup',
+) );
+
+require( ABSPATH . WPINC . '/template-loader.php' );
 
 if ( is_array( get_site_option( 'illegal_names' )) && isset( $_GET[ 'new' ] ) && in_array( $_GET[ 'new' ], get_site_option( 'illegal_names' ) ) ) {
 	wp_redirect( network_home_url() );
@@ -37,9 +41,6 @@ if ( !is_main_site() ) {
 	die();
 }
 
-// Fix for page title
-$wp_query->is_404 = false;
-
 /**
  * Fires before the Site Signup page is loaded.
  *
