diff --git a/res/drawable/ic_menu_delete.xml b/res/drawable/ic_menu_delete.xml
index e95a5db..d994368 100644
--- a/res/drawable/ic_menu_delete.xml
+++ b/res/drawable/ic_menu_delete.xml
@@ -21,6 +21,6 @@
         android:viewportHeight="24.0"
         android:viewportWidth="24.0">
     <path
-        android:fillColor="#FFFFFFFF"
+        android:fillColor="@color/actionbar_icon_color_grey"
         android:pathData="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"/>
 </vector>
diff --git a/res/drawable/ic_menu_link.xml b/res/drawable/ic_menu_link.xml
index b962460..e631034 100644
--- a/res/drawable/ic_menu_link.xml
+++ b/res/drawable/ic_menu_link.xml
@@ -21,6 +21,6 @@
         android:viewportHeight="24.0"
         android:viewportWidth="24.0">
     <path
-        android:fillColor="#FFFFFFFF"
+        android:fillColor="@color/actionbar_icon_color_grey"
         android:pathData="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/>
 </vector>
diff --git a/res/drawable/ic_menu_share.xml b/res/drawable/ic_menu_share.xml
index 60217e2..99e873b 100644
--- a/res/drawable/ic_menu_share.xml
+++ b/res/drawable/ic_menu_share.xml
@@ -21,6 +21,6 @@
         android:viewportHeight="24.0"
         android:viewportWidth="24.0">
     <path
-        android:fillColor="#FFFFFFFF"
+        android:fillColor="@color/actionbar_icon_color_grey"
         android:pathData="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92 1.61 0 2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z"/>
 </vector>
diff --git a/res/layout/selection_bar.xml b/res/layout/selection_bar.xml
index 6c11a39..f8fd7fc 100644
--- a/res/layout/selection_bar.xml
+++ b/res/layout/selection_bar.xml
@@ -28,16 +28,19 @@
         android:background="?attr/selectableItemBackgroundBorderless"
         android:contentDescription="@string/action_menu_back_from_edit_select"
         android:layout_gravity="center_vertical|start"
-        android:tint="@android:color/white" />
+        android:alpha="@dimen/close_icon_alpha" />
 
     <TextView
         android:id="@+id/selection_count_text"
         android:layout_marginStart="72dp"
+        android:layout_marginEnd="@dimen/edit_group_end_margin"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:visibility="gone"
         android:layout_gravity="center_vertical|start"
-        style="@style/ContactsActionBarTitleTextAppCompat" />
+        android:singleLine="true"
+        android:ellipsize="end"
+        style="@style/ContactsActionBarTitleTextBlack" />
 
     <TextView
         android:id="@+id/add_contacts"
@@ -47,7 +50,7 @@
         android:visibility="gone"
         android:layout_gravity="center_vertical|end"
         android:text="@string/menu_add_contacts"
-        android:textColor="@color/actionbar_text_color"
+        android:textColor="@color/primary_color"
         android:textStyle="bold"/>
 
 </FrameLayout>
diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml
index 68e4e87..f0b28a9 100644
--- a/res/values-sw600dp/dimens.xml
+++ b/res/values-sw600dp/dimens.xml
@@ -45,4 +45,7 @@
     <dimen name="account_container_left_padding">16dip</dimen>
     <dimen name="contact_detail_list_top_padding">8dip</dimen>
     <dimen name="frequently_contacted_title_text_size">24sp</dimen>
+
+    <!-- End margin of edit group title -->
+    <dimen name="edit_group_end_margin">80dp</dimen>
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index ee4f55a..8089a2e 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -30,9 +30,9 @@
     <color name="actionbar_background_color">@color/primary_color</color>
     <color name="actionbar_background_color_dark">@color/primary_color_dark</color>
 
-    <color name="contextual_selection_bar_color">#616161</color>
+    <color name="contextual_selection_bar_color">#f6f6f6</color>
     <!-- Color of the status bar above the contextual selection bar. -->
-    <color name="contextual_selection_bar_status_bar_color">#424242</color>
+    <color name="contextual_selection_bar_status_bar_color">#bababa</color>
 
     <color name="primary_color_dark">#0277bd</color>
     <color name="primary_color">#0288d1</color>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 2badc01..b1fecc8 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -286,4 +286,7 @@
 
     <!-- Width for the image for empty group view-->
     <dimen name="empty_group_view_image_width">232dp</dimen>
+
+    <!-- End margin of edit group title -->
+    <dimen name="edit_group_end_margin">72dp</dimen>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b9a5f58..d72b4b2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -672,7 +672,7 @@
     <string name="enter_contact_name">Search contacts</string>
 
     <!-- Title of edit label view  [CHAR LIMIT=20]-->
-    <string name="title_edit_group">Edit Label</string>
+    <string name="title_edit_group">Edit Label: <xliff:g id="group_name" example="Friends">%1$s</xliff:g></string>
 
     <!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
     <string name="local_profile_title">My local profile</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 50d53dc..0af01f7 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -238,6 +238,10 @@
         <item name="android:textColor">@color/actionbar_text_color</item>
     </style>
 
+    <style name="ContactsActionBarTitleTextBlack" parent="@style/ContactsActionBarTitleTextAppCompat">
+        <item name="android:textColor">@color/actionbar_text_color_black</item>
+    </style>
+
     <!-- Styling for the tab bar; handles styling of the divider line. -->
     <style name="ContactsActionBarTabBarStyle"
            parent="@android:style/Widget.Material.ActionBar.TabBar">
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index be94860..aa48bce 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -20,6 +20,7 @@
 import android.app.Activity;
 import android.content.Context;
 import android.content.SharedPreferences;
+import android.content.res.ColorStateList;
 import android.content.res.TypedArray;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
@@ -33,8 +34,10 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.FrameLayout;
+import android.widget.ImageView;
 import android.widget.LinearLayout.LayoutParams;
 import android.widget.SearchView.OnCloseListener;
 import android.view.View.OnClickListener;
@@ -46,6 +49,8 @@
 import com.android.contacts.common.compat.CompatUtils;
 import com.android.contacts.list.ContactsRequest;
 
+import java.util.ArrayList;
+
 /**
  * Adapter for the action bar at the top of the Contacts activity.
  */
@@ -421,6 +426,8 @@
     private void update(boolean skipAnimation) {
         updateStatusBarColor();
 
+        updateOverflowButtonColor();
+
         final boolean isSelectionModeChanging
                 = (mSelectionContainer.getParent() == null) == mSelectionMode;
         final boolean isSwitchingFromSearchToSelection =
@@ -502,6 +509,45 @@
         }
     }
 
+    /**
+     * Find overflow menu ImageView by its content description and update its color.
+     */
+    private void updateOverflowButtonColor() {
+        final String overflowDescription = mActivity.getResources().getString(
+                R.string.abc_action_menu_overflow_description);
+        final ViewGroup decorView = (ViewGroup) mActivity.getWindow().getDecorView();
+        final ViewTreeObserver viewTreeObserver = decorView.getViewTreeObserver();
+        viewTreeObserver.addOnGlobalLayoutListener(
+                new ViewTreeObserver.OnGlobalLayoutListener() {
+                    @Override
+                    public void onGlobalLayout() {
+                        // Find the overflow ImageView.
+                        final ArrayList<View> outViews = new ArrayList<>();
+                        decorView.findViewsWithText(outViews, overflowDescription,
+                                View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION);
+                        if (outViews.isEmpty()) {
+                            return;
+                        }
+                        final ImageView overflow = (ImageView) outViews.get(0);
+                        overflow.setImageResource(R.drawable.ic_more_vert);
+
+                        // Update the overflow image color.
+                        final int iconColor;
+                        if (mSelectionMode) {
+                            iconColor = mActivity.getResources().getColor(
+                                    R.color.actionbar_color_grey_solid);
+                        } else {
+                            iconColor = mActivity.getResources().getColor(
+                                    R.color.actionbar_text_color);
+                        }
+                        overflow.setImageTintList(ColorStateList.valueOf(iconColor));
+
+                        // We're done, remove the listener.
+                        decorView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
+                    }
+                });
+    }
+
     public void setSelectionCount(int selectionCount) {
         TextView textView = (TextView) mSelectionContainer.findViewById(R.id.selection_count_text);
         if (selectionCount == 0) {
diff --git a/src/com/android/contacts/activities/GroupMembersActivity.java b/src/com/android/contacts/activities/GroupMembersActivity.java
index 88b5db2..34b6b25 100644
--- a/src/com/android/contacts/activities/GroupMembersActivity.java
+++ b/src/com/android/contacts/activities/GroupMembersActivity.java
@@ -495,7 +495,8 @@
                 if (mMembersFragment != null) {
                     if (mIsEditMode) {
                         mMembersFragment.displayDeleteButtons(true);
-                        mActionBarAdapter.setActionBarTitle(getString(R.string.title_edit_group));
+                        mActionBarAdapter.setActionBarTitle(
+                                getString(R.string.title_edit_group, mGroupMetadata.groupName));
                     } else {
                         mMembersFragment.displayCheckBoxes(true);
                     }
@@ -544,7 +545,8 @@
     @Override
     public void onSelectedContactIdsChanged() {
         if (mIsEditMode) {
-            mActionBarAdapter.setActionBarTitle(getString(R.string.title_edit_group));
+            mActionBarAdapter.setActionBarTitle(
+                    getString(R.string.title_edit_group, mGroupMetadata.groupName));
         } else {
             mActionBarAdapter.setSelectionCount(mMembersFragment.getSelectedContactIds().size());
         }
