Index: bp-core/bp-core-templatetags.php
===================================================================
--- bp-core/bp-core-templatetags.php	(revision 3220)
+++ bp-core/bp-core-templatetags.php	(working copy)
@@ -311,7 +311,7 @@
 			'height' => false,
 			'class' => 'avatar',
 			'id' => false,
-			'alt' => __( 'Member avatar', 'buddypress' )
+			'alt' => __( 'Picture of %s', 'buddypress' )
 		);
 
 		$r = wp_parse_args( $args, $defaults );
@@ -686,13 +686,14 @@
 			'type'		=> 'thumb',
 			'width'		=> false,
 			'height'	=> false,
-			'html'		=> true
+			'html'		=> true,
+			'alt' => __( 'Picture of %s', 'buddypress' )
 		);
 
 		$r = wp_parse_args( $args, $defaults );
 		extract( $r, EXTR_SKIP );
 
-		return apply_filters( 'bp_get_loggedin_user_avatar', bp_core_fetch_avatar( array( 'item_id' => $bp->loggedin_user->id, 'type' => $type, 'width' => $width, 'height' => $height, 'html' => $html ) ) );
+		return apply_filters( 'bp_get_loggedin_user_avatar', bp_core_fetch_avatar( array( 'item_id' => $bp->loggedin_user->id, 'type' => $type, 'width' => $width, 'height' => $height, 'html' => $html, 'alt' => $alt ) ) );
 	}
 
 function bp_displayed_user_avatar( $args = '' ) {
@@ -705,13 +706,14 @@
 			'type'		=> 'thumb',
 			'width'		=> false,
 			'height'	=> false,
-			'html'		=> true
+			'html'		=> true,
+			'alt' => __( 'Picture of %s', 'buddypress' )
 		);
 
 		$r = wp_parse_args( $args, $defaults );
 		extract( $r, EXTR_SKIP );
 
-		return apply_filters( 'bp_get_displayed_user_avatar', bp_core_fetch_avatar( array( 'item_id' => $bp->displayed_user->id, 'type' => $type, 'width' => $width, 'height' => $height, 'html' => $html ) ) );
+		return apply_filters( 'bp_get_displayed_user_avatar', bp_core_fetch_avatar( array( 'item_id' => $bp->displayed_user->id, 'type' => $type, 'width' => $width, 'height' => $height, 'html' => $html, 'alt' => $alt ) ) );
 	}
 
 function bp_avatar_admin_step() {
Index: bp-core/bp-core-avatars.php
===================================================================
--- bp-core/bp-core-avatars.php	(revision 3220)
+++ bp-core/bp-core-avatars.php	(working copy)
@@ -52,13 +52,15 @@
  * Fetches an avatar from a BuddyPress object. Supports user/group/blog as
  * default, but can be extended to include your own custom components too.
  *
- * @global object $bp
- * @global object $current_blog
+ * @global $bp The global BuddyPress settings variable created in bp_core_setup_globals() 
+ * @global $current_blog WordPress global containing information and settings for the current blog being viewed. 
+ * @global $groups_template Groups template loop object
+ * @global $members_template Members/Group Members template loop object
  * @param array $args Determine the output of this function
  * @return string Formatted HTML <img> element, or raw avatar URL based on $html arg
  */
 function bp_core_fetch_avatar( $args = '' ) {
-	global $bp, $current_blog;
+	global $bp, $current_blog, $groups_template, $members_template;
 
 	// Set a few default variables
 	$def_object		= 'user';
@@ -79,7 +81,8 @@
 		'alt'			=> $def_alt,	// Custom <img> alt (string)
 		'email'			=> false,		// Pass the user email (for gravatar) to prevent querying the DB for it
 		'no_grav'		=> false,		// If there is no avatar found, return false instead of a grav?
-		'html'			=> true			// Wrap the return img URL in <img />
+		'html'			=> true,		// Wrap the return img URL in <img />
+		'title'			=> ''			// Custom <img> title (string)
 	);
 
 	// Compare defaults to passed and extract
@@ -117,6 +120,29 @@
 	// Add an identifying class to each item
 	$class .= ' ' . $object . '-' . $item_id . '-avatar';
 
+	// Set alt tag
+	$item_name = '';
+
+	if ( 'user' == $object ) {
+		if ( $members_template )
+			$item_name = bp_get_member_name();
+		else
+			$item_name = bp_core_get_user_displayname( $item_id );
+
+	} elseif ( 'group' == $object && $groups_template ) {
+		$item_name = bp_get_group_name();
+	} elseif ( 'blog' == $object ) {
+		$item_name = get_blog_option( $item_id, 'blogname' );
+	}
+
+	$alt = sprintf( $alt, apply_filters( 'bp_core_avatar_alt', $item_name, $item_id, $object ) );
+
+	// Set title tag
+	if ( $title )
+		$title = " title='" . apply_filters( 'bp_core_avatar_title', $title, $item_id, $object ) . "'";
+	elseif ( $item_name )
+		$title = " title='" . apply_filters( 'bp_core_avatar_title', $item_name, $item_id, $object ) . "'";
+
 	// Set CSS ID if passed
 	if ( !empty( $css_id ) )
 		$css_id = " id='{$css_id}'";
@@ -195,7 +221,7 @@
 
 			// Return it wrapped in an <img> element
 			if ( true === $html ) {
-				return apply_filters( 'bp_core_fetch_avatar', '<img src="' . $avatar_url . '" alt="' . $alt . '" class="' . $class . '"' . $css_id . $html_width . $html_height . ' />', $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir );
+				return apply_filters( 'bp_core_fetch_avatar', '<img src="' . $avatar_url . '" alt="' . $alt . '" class="' . $class . '"' . $css_id . $html_width . $html_height . $title . ' />', $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir );
 
 			// ...or only the URL
 			} else {
@@ -246,7 +272,7 @@
 
 		// Return gravatar wrapped in <img />
 		if ( true === $html )
-			return apply_filters( 'bp_core_fetch_avatar', '<img src="' . $gravatar . '" alt="' . $alt . '" class="' . $class . '"' . $css_id . $html_width . $html_height . ' />', $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir );
+			return apply_filters( 'bp_core_fetch_avatar', '<img src="' . $gravatar . '" alt="' . $alt . '" class="' . $class . '"' . $css_id . $html_width . $html_height . $title . ' />', $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir );
 
 		// ...or only return the gravatar URL
 		else
@@ -499,6 +525,9 @@
 	if ( empty( $id ) )
 		return !empty( $avatar ) ? $avatar : $default;
 
+	if ( !$alt ) 
+		$alt = __( 'Picture of %s', 'buddypress' ); 
+
 	// Let BuddyPress handle the fetching of the avatar
 	$bp_avatar = bp_core_fetch_avatar( array( 'item_id' => $id, 'width' => $size, 'height' => $size, 'alt' => $alt ) );
 
Index: bp-activity/bp-activity-templatetags.php
===================================================================
--- bp-activity/bp-activity-templatetags.php	(revision 3220)
+++ bp-activity/bp-activity-templatetags.php	(working copy)
@@ -422,7 +422,7 @@
 			'width'  => 20,
 			'height' => 20,
 			'class'  => 'avatar',
-			'alt'    => __( 'Avatar', 'buddypress' ),
+			'alt'    => __( 'Picture of %s', 'buddypress' ),
 			'email'  => false
 		);
 
@@ -468,7 +468,6 @@
 			'width'  => 20,
 			'height' => 20,
 			'class'  => 'avatar',
-			'alt'    => __( 'Avatar', 'buddypress' ),
 			'email'  => false
 		);
 
@@ -480,19 +479,35 @@
 			case 'groups' :
 				$object = 'group';
 				$item_id = $activities_template->activity->item_id;
+
+				if ( !$alt )
+					$alt = __( 'Group avatar', 'buddypress' );
+
 				break;
 			case 'blogs' :
 				$object = 'blog';
 				$item_id = $activities_template->activity->item_id;
+
+				if ( !$alt )
+					$alt = sprintf( __( 'Blog avatar of %s', 'buddypress' ), get_blog_option( $item_id, 'blogname' ) );
+
 				break;
 			case 'friends' :
 				$object  = 'user';
 				$item_id = $activities_template->activity->secondary_item_id;
+
+				if ( !$alt )
+					$alt = __( 'Picture of %s', 'buddypress' );
+
 				break;
 			default :
 				$object  = 'user';
 				$item_id = $activities_template->activity->user_id;
 				$email = $activities_template->activity->user_email;
+
+				if ( !$alt )
+					$alt = __( 'Picture of %s', 'buddypress' );
+
 				break;
 		}
 
Index: bp-blogs/bp-blogs-templatetags.php
===================================================================
--- bp-blogs/bp-blogs-templatetags.php	(revision 3220)
+++ bp-blogs/bp-blogs-templatetags.php	(working copy)
@@ -192,7 +192,7 @@
 			'height' => false,
 			'class' => 'avatar',
 			'id' => false,
-			'alt' => __( 'Blog avatar', 'buddypress' ),
+			'alt' => __( 'Blog authored by %s', 'buddypress' ),
 			'no_grav' => true
 		);
 
Index: bp-forums/bp-forums-templatetags.php
===================================================================
--- bp-forums/bp-forums-templatetags.php	(revision 3220)
+++ bp-forums/bp-forums-templatetags.php	(working copy)
@@ -278,12 +278,13 @@
 			'type' => 'thumb',
 			'width' => false,
 			'height' => false,
+			'alt' => __( 'Picture of %s', 'buddypress' )
 		);
 
 		$r = wp_parse_args( $args, $defaults );
 		extract( $r, EXTR_SKIP );
 
-		return apply_filters( 'bp_get_the_topic_poster_avatar', bp_core_fetch_avatar( array( 'item_id' => $forum_template->topic->topic_poster, 'type' => $type, 'width' => $width, 'height' => $height ) ) );
+		return apply_filters( 'bp_get_the_topic_poster_avatar', bp_core_fetch_avatar( array( 'item_id' => $forum_template->topic->topic_poster, 'type' => $type, 'width' => $width, 'height' => $height, 'alt' => $alt ) ) );
 	}
 
 function bp_the_topic_poster_name() {
@@ -359,12 +360,13 @@
 			'type' => 'thumb',
 			'width' => false,
 			'height' => false,
+			'alt' => __( 'Avatar for %s', 'buddypress' )
 		);
 
 		$r = wp_parse_args( $args, $defaults );
 		extract( $r, EXTR_SKIP );
 
-		return apply_filters( 'bp_get_the_topic_object_avatar', bp_core_fetch_avatar( array( 'item_id' => $forum_template->topic->object_id, 'type' => $type, 'object' => 'group', 'width' => $width, 'height' => $height ) ) );
+		return apply_filters( 'bp_get_the_topic_object_avatar', bp_core_fetch_avatar( array( 'item_id' => $forum_template->topic->object_id, 'type' => $type, 'object' => 'group', 'width' => $width, 'height' => $height, 'alt' => $alt ) ) );
 	}
 
 function bp_the_topic_last_poster_avatar( $args = '' ) {
@@ -377,12 +379,13 @@
 			'type' => 'thumb',
 			'width' => false,
 			'height' => false,
+			'alt' => __( 'Picture of %s', 'buddypress' )
 		);
 
 		$r = wp_parse_args( $args, $defaults );
 		extract( $r, EXTR_SKIP );
 
-		return apply_filters( 'bp_get_the_topic_last_poster_avatar', bp_core_fetch_avatar( array( 'email' => $forum_template->topic->topic_last_poster_email, 'item_id' => $forum_template->topic->topic_last_poster, 'type' => $type, 'width' => $width, 'height' => $height ) ) );
+		return apply_filters( 'bp_get_the_topic_last_poster_avatar', bp_core_fetch_avatar( array( 'email' => $forum_template->topic->topic_last_poster_email, 'item_id' => $forum_template->topic->topic_last_poster, 'type' => $type, 'width' => $width, 'height' => $height, 'alt' => $alt ) ) );
 	}
 
 function bp_the_topic_start_time() {
@@ -892,12 +895,13 @@
 			'type' => 'thumb',
 			'width' => 20,
 			'height' => 20,
+			'alt' => __( 'Picture of %s', 'buddypress' )
 		);
 
 		$r = wp_parse_args( $args, $defaults );
 		extract( $r, EXTR_SKIP );
 
-		return apply_filters( 'bp_get_the_topic_post_poster_avatar', bp_core_fetch_avatar( array( 'item_id' => $topic_template->post->poster_id, 'type' => $type, 'width' => $width, 'height' => $height ) ) );
+		return apply_filters( 'bp_get_the_topic_post_poster_avatar', bp_core_fetch_avatar( array( 'item_id' => $topic_template->post->poster_id, 'type' => $type, 'width' => $width, 'height' => $height, 'alt' => $alt ) ) );
 	}
 
 function bp_the_topic_post_poster_name() {
Index: bp-groups/bp-groups-templatetags.php
===================================================================
--- bp-groups/bp-groups-templatetags.php	(revision 3220)
+++ bp-groups/bp-groups-templatetags.php	(working copy)
@@ -279,7 +279,7 @@
 			'height' => false,
 			'class' => 'avatar',
 			'id' => false,
-			'alt' => __( 'Group avatar', 'buddypress' )
+			'alt' => __( 'Group avatar for %s', 'buddypress' )
 		);
 
 		$r = wp_parse_args( $args, $defaults );
@@ -462,7 +462,7 @@
 		<ul id="group-admins">
 			<?php foreach( (array)$group->admins as $admin ) { ?>
 				<li>
-					<a href="<?php echo bp_core_get_user_domain( $admin->user_id, $admin->user_nicename, $admin->user_login ) ?>"><?php echo bp_core_fetch_avatar( array( 'item_id' => $admin->user_id, 'email' => $admin->user_email ) ) ?></a>
+					<a href="<?php echo bp_core_get_user_domain( $admin->user_id, $admin->user_nicename, $admin->user_login ) ?>"><?php echo bp_core_fetch_avatar( array( 'item_id' => $admin->user_id, 'email' => $admin->user_email, 'alt' => __( 'Picture of %s', 'buddypress' ) ) ) ?></a>
 				</li>
 			<?php } ?>
 		</ul>
@@ -482,7 +482,7 @@
 		<ul id="group-mods">
 			<?php foreach( (array)$group->mods as $mod ) { ?>
 				<li>
-					<a href="<?php echo bp_core_get_user_domain( $mod->user_id, $mod->user_nicename, $mod->user_login ) ?>"><?php echo bp_core_fetch_avatar( array( 'item_id' => $mod->user_id, 'email' => $mod->user_email ) ) ?></a>
+					<a href="<?php echo bp_core_get_user_domain( $mod->user_id, $mod->user_nicename, $mod->user_login ) ?>"><?php echo bp_core_fetch_avatar( array( 'item_id' => $mod->user_id, 'email' => $mod->user_email, 'alt' => __( 'Picture of %s', 'buddypress' ) ) ) ?></a>
 				</li>
 			<?php } ?>
 		</ul>
@@ -723,12 +723,12 @@
 		<?php foreach ( (array)$admins as $admin ) { ?>
 			<?php if ( $admin_list ) { ?>
 			<li>
-				<?php echo bp_core_fetch_avatar( array( 'item_id' => $admin->user_id, 'type' => 'thumb', 'width' => 30, 'height' => 30 ) ) ?>
+				<?php echo bp_core_fetch_avatar( array( 'item_id' => $admin->user_id, 'type' => 'thumb', 'width' => 30, 'height' => 30, 'alt' => __( 'Picture of %s', 'buddypress' ) ) ) ?>
 				<h5><?php echo bp_core_get_userlink( $admin->user_id ) ?>  <span class="small"> &mdash; <a class="confirm" href="<?php bp_group_member_demote_link($admin->user_id) ?>"><?php _e( 'Demote to Member', 'buddypress' ) ?></a></span></h5>
 			</li>
 			<?php } else { ?>
 			<li>
-				<?php echo bp_core_fetch_avatar( array( 'item_id' => $admin->user_id, 'type' => 'thumb' ) ) ?>
+				<?php echo bp_core_fetch_avatar( array( 'item_id' => $admin->user_id, 'type' => 'thumb', 'alt' => __( 'Picture of %s', 'buddypress' ) ) ) ?>
 				<h5><?php echo bp_core_get_userlink( $admin->user_id ) ?></h5>
 				<span class="activity"><?php echo bp_core_get_last_activity( strtotime( $admin->date_modified ), __( 'joined %s ago', 'buddypress') ); ?></span>
 
@@ -761,12 +761,12 @@
 			<?php foreach ( (array)$group_mods as $mod ) { ?>
 				<?php if ( $admin_list ) { ?>
 				<li>
-					<?php echo bp_core_fetch_avatar( array( 'item_id' => $mod->user_id, 'type' => 'thumb', 'width' => 30, 'height' => 30 ) ) ?>
+					<?php echo bp_core_fetch_avatar( array( 'item_id' => $mod->user_id, 'type' => 'thumb', 'width' => 30, 'height' => 30, 'alt' => __( 'Picture of %s', 'buddypress' ) ) ) ?>
 					<h5><?php echo bp_core_get_userlink( $mod->user_id ) ?>  <span class="small"> &mdash; <a href="<?php bp_group_member_promote_admin_link( array( 'user_id' => $mod->user_id ) ) ?>" class="confirm" title="<?php _e( 'Promote to Admin', 'buddypress' ); ?>"><?php _e( 'Promote to Admin', 'buddypress' ); ?></a> | <a class="confirm" href="<?php bp_group_member_demote_link($mod->user_id) ?>"><?php _e( 'Demote to Member', 'buddypress' ) ?></a></span></h5>
 				</li>
 				<?php } else { ?>
 				<li>
-					<?php echo bp_core_fetch_avatar( array( 'item_id' => $mod->user_id, 'type' => 'thumb' ) ) ?>
+					<?php echo bp_core_fetch_avatar( array( 'item_id' => $mod->user_id, 'type' => 'thumb', 'alt' => __( 'Picture of %s', 'buddypress' ) ) ) ?>
 					<h5><?php echo bp_core_get_userlink( $mod->user_id ) ?></h5>
 					<span class="activity"><?php echo bp_core_get_last_activity( strtotime( $mod->date_modified ), __( 'joined %s ago', 'buddypress') ); ?></span>
 
@@ -1316,7 +1316,7 @@
 	function bp_get_group_member_avatar() {
 		global $members_template;
 
-		return apply_filters( 'bp_get_group_member_avatar', bp_core_fetch_avatar( array( 'item_id' => $members_template->member->user_id, 'type' => 'full', 'email' => $members_template->member->user_email ) ) );
+		return apply_filters( 'bp_get_group_member_avatar', bp_core_fetch_avatar( array( 'item_id' => $members_template->member->user_id, 'type' => 'full', 'email' => $members_template->member->user_email, 'alt' => __( 'Picture of %s', 'buddypress' ) ) ) );
 	}
 
 function bp_group_member_avatar_thumb() {
@@ -1325,7 +1325,7 @@
 	function bp_get_group_member_avatar_thumb() {
 		global $members_template;
 
-		return apply_filters( 'bp_get_group_member_avatar_thumb', bp_core_fetch_avatar( array( 'item_id' => $members_template->member->user_id, 'type' => 'thumb', 'email' => $members_template->member->user_email ) ) );
+		return apply_filters( 'bp_get_group_member_avatar_thumb', bp_core_fetch_avatar( array( 'item_id' => $members_template->member->user_id, 'type' => 'thumb', 'email' => $members_template->member->user_email, 'alt' => __( 'Picture of %s', 'buddypress' ) ) ) );
 	}
 
 function bp_group_member_avatar_mini( $width = 30, $height = 30 ) {
@@ -1334,7 +1334,7 @@
 	function bp_get_group_member_avatar_mini( $width = 30, $height = 30 ) {
 		global $members_template;
 
-		return apply_filters( 'bp_get_group_member_avatar_mini', bp_core_fetch_avatar( array( 'item_id' => $members_template->member->user_id, 'type' => 'thumb', 'width' => $width, 'height' => $height, 'email' => $members_template->member->user_email ) ) );
+		return apply_filters( 'bp_get_group_member_avatar_mini', bp_core_fetch_avatar( array( 'item_id' => $members_template->member->user_id, 'type' => 'thumb', 'width' => $width, 'height' => $height, 'email' => $members_template->member->user_email, 'alt' => __( 'Picture of %s', 'buddypress' ) ) ) );
 	}
 
 function bp_group_member_name() {
@@ -1975,7 +1975,7 @@
 function bp_group_request_user_avatar_thumb() {
 	global $requests_template;
 
-	echo apply_filters( 'bp_group_request_user_avatar_thumb', bp_core_fetch_avatar( array( 'item_id' => $requests_template->request->user_id, 'type' => 'thumb' ) ) );
+	echo apply_filters( 'bp_group_request_user_avatar_thumb', bp_core_fetch_avatar( array( 'item_id' => $requests_template->request->user_id, 'type' => 'thumb', 'alt' => __( 'Picture of %s', 'buddypress' ) ) ) );
 }
 
 function bp_group_request_reject_link() {
