Index: bp-core/bp-core-catchuri.php
===================================================================
--- bp-core/bp-core-catchuri.php
+++ bp-core/bp-core-catchuri.php
@@ -375,6 +375,7 @@ function bp_core_load_template( $templates ) {
 
 	// Filter the template locations so that plugins can alter where they are located
 	$located_template = apply_filters( 'bp_located_template', locate_template( (array) $filtered_templates, false ), $filtered_templates );
+
 	if ( !empty( $located_template ) ) {
 
 		// Template was located, lets set this as a valid page and not a 404.
@@ -458,9 +459,9 @@ function bp_core_no_access( $args = '' ) {
  	$redirect_url .= $_SERVER['REQUEST_URI'];
 
 	$defaults = array(
-		'mode'     => '1',                  // 1 = $root, 2 = wp-login.php
-		'redirect' => $redirect_url,        // the URL you get redirected to when a user successfully logs in
-		'root'     => bp_get_root_domain(),	// the landing page you get redirected to when a user doesn't have access
+		'mode'     => bp_is_theme_compat() ? 2 : 1, // 1 = $root, 2 = wp-login.php
+		'redirect' => $redirect_url,                // the URL you get redirected to when a user successfully logs in
+		'root'     => bp_get_root_domain(),	    // the landing page you get redirected to when a user doesn't have access
 		'message'  => __( 'You must log in to access the page you requested.', 'buddypress' )
 	);
 
@@ -471,11 +472,11 @@ function bp_core_no_access( $args = '' ) {
 	/**
 	 * @ignore Ignore these filters and use 'bp_core_no_access' above
 	 */
-	$mode		= apply_filters( 'bp_no_access_mode',     $mode,     $root,     $redirect, $message );
-	$redirect	= apply_filters( 'bp_no_access_redirect', $redirect, $root,     $message,  $mode    );
-	$root		= apply_filters( 'bp_no_access_root',     $root,     $redirect, $message,  $mode    );
-	$message	= apply_filters( 'bp_no_access_message',  $message,  $root,     $redirect, $mode    );
-	$root       = trailingslashit( $root );
+	$mode     = apply_filters( 'bp_no_access_mode',     $mode,     $root,     $redirect, $message );
+	$redirect = apply_filters( 'bp_no_access_redirect', $redirect, $root,     $message,  $mode    );
+	$root     = apply_filters( 'bp_no_access_root',     $root,     $redirect, $message,  $mode    );
+	$message  = apply_filters( 'bp_no_access_message',  $message,  $root,     $redirect, $mode    );
+	$root     = trailingslashit( $root );
 
 	switch ( $mode ) {
 
Index: bp-core/bp-core-theme-compatibility.php
===================================================================
--- bp-core/bp-core-theme-compatibility.php
+++ bp-core/bp-core-theme-compatibility.php
@@ -175,6 +175,20 @@ function bp_get_theme_compat_url() {
 }
 
 /**
+ * Gets true/false if theme compatibility is on.
+ *
+ * @since BuddyPress (1.7)
+ * @return bool
+ */
+function bp_is_theme_compat() {
+	if ( empty( buddypress()->theme_compat->theme ) ) {
+		return false;
+	}
+
+	return true;
+}
+
+/**
  * Gets true/false if page is currently inside theme compatibility
  *
  * @since BuddyPress (1.7)
Index: bp-members/bp-members-functions.php
===================================================================
--- bp-members/bp-members-functions.php
+++ bp-members/bp-members-functions.php
@@ -1396,7 +1396,6 @@ function bp_core_wpsignup_redirect() {
 		return;
 
 	// Redirect to sign-up page
-	if ( locate_template( array( 'registration/register.php' ), false ) || locate_template( array( 'register.php' ), false ) )
-		bp_core_redirect( bp_get_signup_page() );
+	bp_core_redirect( bp_get_signup_page() );
 }
 add_action( 'bp_init', 'bp_core_wpsignup_redirect' );
Index: bp-members/bp-members-screens.php
===================================================================
--- bp-members/bp-members-screens.php
+++ bp-members/bp-members-screens.php
@@ -178,7 +178,7 @@ function bp_core_screen_signup() {
 
 					if ( !empty( $_POST['field_' . $field_id] ) )
 						$usermeta['field_' . $field_id] = $_POST['field_' . $field_id];
-					
+
 					if ( !empty( $_POST['field_' . $field_id . '_visibility'] ) )
 						$usermeta['field_' . $field_id . '_visibility'] = $_POST['field_' . $field_id . '_visibility'];
 				}
@@ -203,7 +203,7 @@ function bp_core_screen_signup() {
 
 				if ( is_wp_error( $wp_user_id ) ) {
 					$bp->signup->step = 'request-details';
-					bp_core_add_message( $wp_user_id->get_error_message(), 'error' ); 
+					bp_core_add_message( $wp_user_id->get_error_message(), 'error' );
 				} else {
 					$bp->signup->step = 'completed-confirmation';
 				}
@@ -334,3 +334,97 @@ class BP_Members_Theme_Compat {
 	}
 }
 new BP_Members_Theme_Compat();
+
+/**
+ * The main theme compat class for BuddyPress Registration
+ *
+ * This class sets up the necessary theme compatability actions to safely output
+ * registration template parts to the_title and the_content areas of a theme.
+ *
+ * @since BuddyPress (1.7)
+ */
+class BP_Registration_Theme_Compat {
+
+	/**
+	 * Setup the groups component theme compatibility
+	 *
+	 * @since BuddyPress (1.7)
+	 */
+	public function __construct() {
+		add_action( 'bp_setup_theme_compat', array( $this, 'is_registration' ) );
+	}
+
+	/**
+	 * Are we looking at either the registration or activation pages?
+	 *
+	 * @since BuddyPress (1.7)
+	 */
+	public function is_registration() {
+
+		// Bail if not looking at the registration or activation page
+		if ( ! bp_is_register_page() && ! bp_is_activation_page() ) {
+			return;
+		}
+
+		// Not a directory
+		bp_update_is_directory( false, 'register' );
+
+		// Setup actions
+		add_action( 'bp_template_include_reset_dummy_post_data', array( $this, 'dummy_post'    ) );
+		add_filter( 'bp_replace_the_content',                    array( $this, 'dummy_content' ) );
+	}
+
+	/** Template ***********************************************************/
+
+	/**
+	 * Update the global $post with dummy data
+	 *
+	 * @since BuddyPress (1.7)
+	 */
+	public function dummy_post() {
+		// Registration page
+		if ( bp_is_register_page() ) {
+			$title = __( 'Create an Account', 'buddypress' );
+
+			if ( 'completed-confirmation' == bp_get_current_signup_step() ) {
+				$title = __( 'Sign Up Complete!', 'buddypress' );
+			}
+
+		// Activation page
+		} else {
+			$title = __( 'Activate your Account', 'buddypress' );
+
+			if ( bp_account_was_activated() ) {
+				$title = __( 'Account Activated', 'buddypress' );
+			}	
+		}
+
+		$post_type = bp_is_register_page() ? 'bp_register' : 'bp_activate';
+
+		bp_theme_compat_reset_post( array(
+			'ID'             => 0,
+			'post_title'     => $title,
+			'post_author'    => 0,
+			'post_date'      => 0,
+			'post_content'   => '',
+			'post_type'      => $post_type,
+			'post_status'    => 'publish',
+			'is_archive'     => true,
+			'comment_status' => 'closed'
+		) );
+	}
+
+	/**
+	 * Filter the_content with either the register or activate templates.
+	 *
+	 * @since BuddyPress (1.7)
+	 */
+	public function dummy_content() {
+		if ( bp_is_register_page() ) {
+			bp_buffer_template_part( 'members/register' );
+		} else {
+			bp_buffer_template_part( 'members/activate' );
+		}
+	}
+}
+new BP_Registration_Theme_Compat();
Index: bp-members/bp-members-template.php
===================================================================
--- bp-members/bp-members-template.php
+++ bp-members/bp-members-template.php
@@ -926,8 +926,15 @@ function bp_loggedin_user_username() {
 /** Signup Form ***************************************************************/
 
 function bp_has_custom_signup_page() {
-	if ( locate_template( array( 'register.php' ), false ) || locate_template( array( '/registration/register.php' ), false ) )
+	// if we're using theme compat, we're using our own templates, return true
+	if ( bp_is_theme_compat() ) {
 		return true;
+	}
+
+	// look in parent / child theme for custom template
+	if ( locate_template( array( 'register.php' ), false ) || locate_template( array( '/registration/register.php' ), false ) ) {
+		return true;
+	}
 
 	return false;
 }
Index: bp-themes/bp-legacy/buddypress/members/activate.php
===================================================================
--- bp-themes/bp-legacy/buddypress/members/activate.php
+++ bp-themes/bp-legacy/buddypress/members/activate.php
@@ -6,8 +6,6 @@
 
 		<?php if ( bp_account_was_activated() ) : ?>
 
-			<h2 class="widgettitle"><?php _e( 'Account Activated', 'buddypress' ); ?></h2>
-
 			<?php do_action( 'bp_before_activate_content' ); ?>
 
 			<?php if ( isset( $_GET['e'] ) ) : ?>
@@ -18,8 +16,6 @@
 
 		<?php else : ?>
 
-			<h3><?php _e( 'Activate your Account', 'buddypress' ); ?></h3>
-
 			<?php do_action( 'bp_before_activate_content' ); ?>
 
 			<p><?php _e( 'Please provide a valid activation key.', 'buddypress' ); ?></p>
Index: bp-themes/bp-legacy/buddypress/members/register.php
===================================================================
--- bp-themes/bp-legacy/buddypress/members/register.php
+++ bp-themes/bp-legacy/buddypress/members/register.php
@@ -17,8 +17,6 @@
 
 		<?php if ( 'request-details' == bp_get_current_signup_step() ) : ?>
 
-			<h2><?php _e( 'Create an Account', 'buddypress' ); ?></h2>
-
 			<?php do_action( 'template_notices' ); ?>
 
 			<p><?php _e( 'Registering for this site is easy, just fill in the fields below and we\'ll get a new account set up for you in no time.', 'buddypress' ); ?></p>
@@ -246,8 +244,6 @@
 
 		<?php if ( 'completed-confirmation' == bp_get_current_signup_step() ) : ?>
 
-			<h2><?php _e( 'Sign Up Complete!', 'buddypress' ); ?></h2>
-
 			<?php do_action( 'template_notices' ); ?>
 			<?php do_action( 'bp_before_registration_confirmed' ); ?>
 
