diff --git bp-core/bp-core-actions.php bp-core/bp-core-actions.php
index f19b30b..8912f3d 100644
--- bp-core/bp-core-actions.php
+++ bp-core/bp-core-actions.php
@@ -36,7 +36,7 @@ add_action( 'init',                    'bp_init',                   10    );
 add_action( 'wp',                      'bp_ready',                  10    );
 add_action( 'set_current_user',        'bp_setup_current_user',     10    );
 add_action( 'setup_theme',             'bp_setup_theme',            10    );
-add_action( 'after_setup_theme',       'bp_after_setup_theme',      10    );
+add_action( 'after_setup_theme',       'bp_after_setup_theme',      100   ); // After WP themes
 add_action( 'wp_enqueue_scripts',      'bp_enqueue_scripts',        10    );
 add_action( 'admin_bar_menu',          'bp_setup_admin_bar',        20    ); // After WP core
 add_action( 'template_redirect',       'bp_template_redirect',      10    );
diff --git bp-core/bp-core-dependency.php bp-core/bp-core-dependency.php
index 9fd177b..553d658 100644
--- bp-core/bp-core-dependency.php
+++ bp-core/bp-core-dependency.php
@@ -196,6 +196,10 @@ function bp_setup_theme() {
  * Piggy back action for BuddyPress sepecific theme actions once the theme has
  * been setup and the theme's functions.php has loaded.
  *
+ * Hooked to 'after_setup_theme' with a priority of 100. This allows plenty of
+ * time for other themes to load their features, such as BuddyPress support,
+ * before our theme compatibility layer kicks in.
+ *
  * @since BuddyPress (1.6)
  *
  * @uses do_action() Calls 'bp_after_setup_theme'
diff --git bp-templates/bp-legacy/buddypress-functions.php bp-templates/bp-legacy/buddypress-functions.php
index 5e8ec4b..929dfa9 100644
--- bp-templates/bp-legacy/buddypress-functions.php
+++ bp-templates/bp-legacy/buddypress-functions.php
@@ -47,8 +47,14 @@ class BP_Legacy extends BP_Theme_Compat {
 	public function __construct() {
 
 		// Bail if theme is a derivative of bp-default
-		if ( in_array( 'bp-default', array( get_template(), get_stylesheet() ) ) )
+		if ( in_array( 'bp-default', array( get_template(), get_stylesheet() ) ) ) {
 			return;
+		}
+
+		// Or if the theme supports 'buddypress'
+		if ( current_theme_supports( 'buddypress' ) ) {
+			return;
+		}
 
 		$this->setup_globals();
 		$this->setup_actions();
