diff --git a/plugins/views_plugin_display_system.inc b/plugins/views_plugin_display_system.inc
index eada0fb..925b01d 100644
--- a/plugins/views_plugin_display_system.inc
+++ b/plugins/views_plugin_display_system.inc
@@ -175,6 +175,16 @@ class views_plugin_display_system extends views_plugin_display {
         // combined with $items[$path] + $defaults, but are separated for
         // documentation purposes and clarity.)
         $child += array_intersect_key($parent, $defaults);
+
+        // unset the child 'file' property if the childs implementing module
+        // doesn't match it's parent. Otherwise, for example, example_module
+        // could inherit a 'file' property of 'node.admin.inc', so the actual
+        // include path would be something like
+        // .../modules/example_module/node.admin.inc
+        if ($child['module'] != $parent['module']) {
+          unset($child['file']);
+        }
+
         // Last catch-22, insert new default properties and their default values
         // for the child, which may not be defined on the original parent.
         // This typically inserts 'access callback', which can be omitted in
@@ -184,6 +194,7 @@ class views_plugin_display_system extends views_plugin_display {
         $child += $defaults;
       }
     }
+
     // If the original parent path already existed, copy over its remaining
     // properties.
     $items[$path] += $parent;
diff --git a/tests/admin_views.test b/tests/admin_views.test
index abdb7fa..7ffa639 100644
--- a/tests/admin_views.test
+++ b/tests/admin_views.test
@@ -86,6 +86,10 @@ class AdminViewsSystemDisplayTestCase extends AdminViewsWebTestCase {
     );
   }
 
+  function setUp() {
+    parent::setUp(array('node', 'comment', 'admin_views_test'));
+  }
+
   /**
    * Tests proper inheritance of router item properties.
    */
@@ -102,6 +106,12 @@ class AdminViewsSystemDisplayTestCase extends AdminViewsWebTestCase {
       $this->clickLink($link);
       $this->assertResponse(200);
     }
+
+    // Test that child page callbacks of a system display work.
+    $this->drupalGet('admin/content/admin_views_test');
+    $this->assertResponse(200);
+    $this->assertTitle('Administration views test | Drupal');
+    $this->assertText('Administration views test page callback');
   }
 }
 
diff --git a/tests/admin_views_test/admin_views_test.info b/tests/admin_views_test/admin_views_test.info
new file mode 100644
index 0000000..7e8698b
--- /dev/null
+++ b/tests/admin_views_test/admin_views_test.info
@@ -0,0 +1,7 @@
+name = Administration views test
+description = Administration views test module
+core = 7.x
+package = administration
+hidden = TRUE
+
+dependencies[] admin_views
diff --git a/tests/admin_views_test/admin_views_test.module b/tests/admin_views_test/admin_views_test.module
new file mode 100644
index 0000000..6f83cc9
--- /dev/null
+++ b/tests/admin_views_test/admin_views_test.module
@@ -0,0 +1,29 @@
+<?php
+
+/**
+ * @file
+ * Administration views test module.
+ */
+
+/**
+ * Implements hook_menu().
+ */
+function admin_views_test_menu() {
+  $items = array();
+
+  $items['admin/content/admin_views_test'] = array(
+    'title' => 'Administration views test',
+    'description' => 'Administration views test',
+    'page callback' => 'admin_views_test_page_callback',
+    'access callback' => TRUE,
+  );
+
+  return $items;
+}
+
+/**
+ * Test page callback.
+ */
+function admin_views_test_page_callback() {
+  return 'Administration views test page callback';
+}
