diff --git a/modules/system/system.admin.inc b/modules/system/system.admin.inc
index 9e7d69d..8109e2a 100644
--- a/modules/system/system.admin.inc
+++ b/modules/system/system.admin.inc
@@ -811,8 +811,18 @@ function system_modules($form, $form_state = array()) {
       // Only display visible modules.
       elseif (isset($visible_files[$requires])) {
         $requires_name = $files[$requires]->info['name'];
-        if ($incompatible_version = drupal_check_incompatibility($v, str_replace(DRUPAL_CORE_COMPATIBILITY . '-', '', $files[$requires]->info['version']))) {
-          $extra['requires'][$requires] = t('@module (<span class="admin-missing">incompatible with</span> version @version)', array(
+        // Disable this module if the dependency's core version is incompatible
+        // with this version of core.
+        if (substr($files[$requires]->info['version'], 0, 2) . 'x' != DRUPAL_CORE_COMPATIBILITY) {
+          $extra['requires'][$requires] = t('@module (<span class="admin-missing">incompatible with core version</span>)', array(
+            '@module' => $requires_name,
+          ));
+          $extra['disabled'] = TRUE;
+        }
+        // Disable this module if the dependency's version is incompatible with
+        // the module's requirements.
+        elseif ($incompatible_version = drupal_check_incompatibility($v, str_replace(DRUPAL_CORE_COMPATIBILITY . '-', '', $files[$requires]->info['version']))) {
+          $extra['requires'][$requires] = t('@module (<span class="admin-missing">incompatible with version @version</span>)', array(
             '@module' => $requires_name . $incompatible_version,
             '@version' => $files[$requires]->info['version'],
           ));
