diff --git a/includes/menu.inc b/includes/menu.inc
index b25a374..df21004 100644
--- a/includes/menu.inc
+++ b/includes/menu.inc
@@ -1505,6 +1505,10 @@ function _menu_tree_check_access(&$tree) {
   $new_tree = array();
   foreach ($tree as $key => $v) {
     $item = &$tree[$key]['link'];
+    // Do not load hidden menu items if user can't administer the menu.
+    if ($item['hidden'] && !user_access('administer menu')) {
+       continue;
+    }
     _menu_link_translate($item);
     if ($item['access'] || ($item['in_active_trail'] && strpos($item['href'], '%') !== FALSE)) {
       if ($tree[$key]['below']) {
