diff --git src/bp-groups/bp-groups-functions.php src/bp-groups/bp-groups-functions.php
index 006bf6f..bde6b9c 100644
--- src/bp-groups/bp-groups-functions.php
+++ src/bp-groups/bp-groups-functions.php
@@ -957,11 +957,17 @@ function groups_total_groups_for_user( $user_id = 0 ) {
  * @return BP_Groups_Group The current group object.
  */
 function groups_get_current_group() {
+	global $groups_template;
 	$bp = buddypress();
+	$current_group = false;
 
-	$current_group = isset( $bp->groups->current_group )
-		? $bp->groups->current_group
-		: false;
+	// Check the template first, in case we're in a groups loop inside of a group.
+	if ( ! empty( $groups_template->group ) && ( $groups_template->group instanceof BP_Groups_Group) ) {
+		$current_group = $groups_template->group;
+	// Next we check the bp global.
+	} elseif ( ! empty( $bp->groups->current_group ) && ( $bp->groups->current_group instanceof BP_Groups_Group ) ) {
+		$current_group = $bp->groups->current_group;
+	}
 
 	/**
 	 * Filters the BP_Groups_Group object corresponding to the current group.
diff --git src/bp-groups/bp-groups-template.php src/bp-groups/bp-groups-template.php
index 2e467a4..0b5ba0d 100644
--- src/bp-groups/bp-groups-template.php
+++ src/bp-groups/bp-groups-template.php
@@ -643,10 +643,9 @@ function bp_group_name( $group = false ) {
 	 * @return string
 	 */
 	function bp_get_group_name( $group = false ) {
-		global $groups_template;
 
-		if ( empty( $group ) ) {
-			$group =& $groups_template->group;
+		if ( ! ( $group instanceof BP_Groups_Group ) ) {
+			$group = groups_get_current_group();
 		}
 
 		/**
