Index: wp-admin/includes/plugin.php
===================================================================
--- wp-admin/includes/plugin.php	(revision 22376)
+++ wp-admin/includes/plugin.php	(working copy)
@@ -902,12 +902,15 @@
 	if ( !empty( $function ) && !empty( $hookname ) && current_user_can( $capability ) )
 		add_action( $hookname, $function );
 
-	if ( empty($icon_url) )
-		$icon_url = esc_url( admin_url( 'images/generic.png' ) );
-	else
+	if ( empty($icon_url) ) {
+		$icon_url = 'none';
+		$icon_class = 'menu-icon-generic ';
+	} else {
 		$icon_url = set_url_scheme( $icon_url );
+		$icon_class = '';
+	}
 
-	$new_menu = array( $menu_title, $capability, $menu_slug, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url );
+	$new_menu = array( $menu_title, $capability, $menu_slug, $page_title, 'menu-top ' . $icon_class . $hookname, $hookname, $icon_url );
 
 	if ( null === $position )
 		$menu[] = $new_menu;
Index: wp-admin/images/icons32-2x.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: wp-admin/images/icons32-vs-2x.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: wp-admin/images/icons32-vs.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: wp-admin/images/icons32.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: wp-admin/images/menu-vs.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: wp-admin/css/colors-fresh.css
===================================================================
--- wp-admin/css/colors-fresh.css	(revision 22376)
+++ wp-admin/css/colors-fresh.css	(working copy)
@@ -1043,7 +1043,9 @@
 .icon16.icon-settings,
 .menu-icon-settings div.wp-menu-image,
 .icon16.icon-site,
-.menu-icon-site div.wp-menu-image {
+.menu-icon-site div.wp-menu-image,
+.icon16.icon-generic,
+.menu-icon-generic div.wp-menu-image {
 	background-image: url('../images/menu.png?ver=20120201');
 }
 
@@ -1178,6 +1180,18 @@
 #adminmenu .menu-icon-site.current div.wp-menu-image {
 	background-position: -359px -1px;
 }
+
+.icon16.icon-generic,
+#adminmenu .menu-icon-generic div.wp-menu-image {
+	background-position: -330px -34px;
+}
+
+#adminmenu .menu-icon-generic:hover div.wp-menu-image,
+#adminmenu .menu-icon-generic.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-generic.current div.wp-menu-image {
+	background-position: -330px -2px;
+}
+
 /* end menu and screen icons */
 
 /* Screen Icons */
@@ -1211,7 +1225,9 @@
 .icon32.icon-settings,
 #icon-options-general,
 .icon32.icon-site,
-#icon-ms-admin {
+#icon-ms-admin,
+.icon32.icon-generic,
+#icon-generic {
 	background-image: url(../images/icons32.png?ver=20111206);
 }
 
@@ -1282,6 +1298,11 @@
 	background-position: -659px -5px;
 }
 
+.icon32.icon-generic,
+#icon-generic {
+	background-position: -???px -5px;
+}
+
 /* end screen icons */
 
 /* Diff */
@@ -1952,9 +1973,11 @@
 	.icon32.icon-settings,
 	#icon-options-general,
 	.icon32.icon-site,
-	#icon-ms-admin {
+	#icon-ms-admin,
+	.icon32.icon-generic,
+	#icon-generic {
 		background-image: url("../images/icons32-2x.png?ver=20120916");
-		background-size: 708px 45px;
+		background-size: 756px 45px;
 	}
 
 	.icon16.icon-dashboard,
@@ -1980,7 +2003,9 @@
 	.icon16.icon-settings,
 	.menu-icon-settings div.wp-menu-image,
 	.icon16.icon-site,
-	.menu-icon-site div.wp-menu-image {
+	.menu-icon-site div.wp-menu-image,
+	.icon16.icon-generic,
+	.menu-icon-generic div.wp-menu-image {
 		background-image: url("../images/menu-2x.png?ver=20120916");
 		background-size: 390px 64px;
 	}
Index: wp-admin/css/colors-classic.css
===================================================================
--- wp-admin/css/colors-classic.css	(revision 22376)
+++ wp-admin/css/colors-classic.css	(working copy)
@@ -1087,7 +1087,9 @@
 .icon16.icon-settings,
 .menu-icon-settings div.wp-menu-image,
 .icon16.icon-site,
-.menu-icon-site div.wp-menu-image {
+.menu-icon-site div.wp-menu-image,
+.icon16.icon-generic,
+.menu-icon-generic div.wp-menu-image {
 	background-image: url('../images/menu-vs.png?ver=20120201');
 }
 
@@ -1222,6 +1224,17 @@
 #adminmenu .menu-icon-site.current div.wp-menu-image {
 	background-position: -359px -1px;
 }
+
+.icon16.icon-generic,
+#adminmenu .menu-icon-generic div.wp-menu-image {
+	background-position: -330px -34px;
+}
+
+#adminmenu .menu-icon-generic:hover div.wp-menu-image,
+#adminmenu .menu-icon-generic.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-generic.current div.wp-menu-image {
+	background-position: -330px -2px;
+}
 /* end menu and screen icons */
 
 /* Screen Icons */
@@ -1255,7 +1268,9 @@
 .icon32.icon-settings,
 #icon-options-general,
 .icon32.icon-site,
-#icon-ms-admin {
+#icon-ms-admin,
+.icon32.icon-generic,
+#icon-generic {
 	background-image: url(../images/icons32-vs.png?ver=20111206);
 }
 
@@ -1326,6 +1341,11 @@
 	background-position: -659px -5px;
 }
 
+.icon32.icon-generic,
+#icon-generic {
+	background-position: -708px -5px;
+}
+
 /* end screen icons */
 
 /* Diff */
@@ -2029,7 +2049,7 @@
 
 	#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,
 	#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,
-	.nav-menus-php .item-edit:hover,	
+	.nav-menus-php .item-edit:hover,
 	.sidebar-name:hover .sidebar-name-arrow,
 	.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,
 	.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle,
@@ -2074,9 +2094,11 @@
 	.icon32.icon-settings,
 	#icon-options-general,
 	.icon32.icon-site,
-	#icon-ms-admin {
+	#icon-ms-admin,
+	.icon32.icon-generic,
+	#icon-generic {
 		background-image: url("../images/icons32-vs-2x.png?ver=20120916");
-		background-size: 708px 45px;
+		background-size: 756px 45px;
 	}
 
 	.icon16.icon-dashboard,
@@ -2102,8 +2124,10 @@
 	.icon16.icon-settings,
 	.menu-icon-settings div.wp-menu-image,
 	.icon16.icon-site,
-	.menu-icon-site div.wp-menu-image {
-		background-image: url("../images/menu-2x.png?ver=20120916"); // @todo needs menu-vs-2x.png
+	.menu-icon-site div.wp-menu-image,
+	.icon16.icon-generic,
+	.menu-icon-generic div.wp-menu-image {
+		background-image: url("../images/menu-vs-2x.png?ver=20120916");
 		background-size: 390px 64px;
 	}
 
