diff --git a/core/java/com/android/internal/view/menu/MenuItemImpl.java b/core/java/com/android/internal/view/menu/MenuItemImpl.java
index ef4e546..3b1f20d 100644
--- a/core/java/com/android/internal/view/menu/MenuItemImpl.java
+++ b/core/java/com/android/internal/view/menu/MenuItemImpl.java
@@ -21,8 +21,6 @@
 import android.content.ActivityNotFoundException;
 import android.content.Context;
 import android.content.Intent;
-import android.content.res.ColorStateList;
-import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
 import android.util.Log;
 import android.view.ActionProvider;
@@ -62,11 +60,6 @@
      * needed).
      */ 
     private int mIconResId = NO_ICON;
-
-    /**
-     * Tint info for the icon
-     */
-    private TintInfo mIconTintInfo;
     
     /** The menu to which this item belongs */
     private MenuBuilder mMenu;
@@ -392,10 +385,10 @@
         }
 
         if (mIconResId != NO_ICON) {
-            mIconDrawable = mMenu.getContext().getDrawable(mIconResId);
+            Drawable icon =  mMenu.getContext().getDrawable(mIconResId);
             mIconResId = NO_ICON;
-            applyIconTint();
-            return mIconDrawable;
+            mIconDrawable = icon;
+            return icon;
         }
         
         return null;
@@ -404,7 +397,6 @@
     public MenuItem setIcon(Drawable icon) {
         mIconResId = NO_ICON;
         mIconDrawable = icon;
-        applyIconTint();
         mMenu.onItemsChanged(false);
         
         return this;
@@ -678,48 +670,4 @@
     public boolean isActionViewExpanded() {
         return mIsActionViewExpanded;
     }
-
-    @Override
-    public MenuItem setIconTintList(ColorStateList tintList) {
-        if (mIconTintInfo == null) {
-            mIconTintInfo = new TintInfo();
-        }
-        mIconTintInfo.mTintList = tintList;
-        mIconTintInfo.mHasTintList = true;
-        applyIconTint();
-        return this;
-    }
-
-    @Override
-    public MenuItem setIconTintMode(PorterDuff.Mode tintMode) {
-        if (mIconTintInfo == null) {
-            mIconTintInfo = new TintInfo();
-        }
-        mIconTintInfo.mTintMode = tintMode;
-        mIconTintInfo.mHasTintMode = true;
-        applyIconTint();
-        return this;
-    }
-
-    private void applyIconTint() {
-        final TintInfo tintInfo = mIconTintInfo;
-        if (mIconDrawable != null && tintInfo != null) {
-            if (tintInfo.mHasTintList || tintInfo.mHasTintMode) {
-                mIconDrawable = mIconDrawable.mutate();
-                if (tintInfo.mHasTintList) {
-                    mIconDrawable.setTintList(tintInfo.mTintList);
-                }
-                if (tintInfo.mHasTintMode) {
-                    mIconDrawable.setTintMode(tintInfo.mTintMode);
-                }
-            }
-        }
-    }
-
-    private static class TintInfo {
-        ColorStateList mTintList;
-        PorterDuff.Mode mTintMode;
-        boolean mHasTintMode;
-        boolean mHasTintList;
-    }
 }
