diff --git includes/theme.inc includes/theme.inc
index 101180e..c131852 100644
--- includes/theme.inc
+++ includes/theme.inc
@@ -2469,20 +2469,22 @@ function theme_get_suggestions($args, $base, $delimiter = '__') {
   // page__node__edit        page-node-edit
 
   $suggestions = array();
+  $prefix = $base;
   foreach ($args as $arg) {
     // Remove slashes or null per SA-CORE-2009-003.
     $arg = str_replace(array("/", "\\", "\0"), '', $arg);
     // The percent acts as a wildcard for numeric arguments since
     // asterisks are not valid filename characters on many filesystems.
     if (is_numeric($arg)) {
-      $suggestions[] = $base . $delimiter . '%';
+      $suggestions[] = $prefix . $delimiter . '%';
     }
-    $suggestions[] = $base . $delimiter . $arg;
+    $suggestions[] = $prefix . $delimiter . $arg;
     if (!is_numeric($arg)) {
-      $base .= $delimiter . $arg;
+      $prefix .= $delimiter . $arg;
     }
   }
   if (drupal_is_front_page()) {
+    // Front templates should be based on root only, not prefixed arguments.
     $suggestions[] = $base . $delimiter . 'front';
   }
 
diff --git modules/simpletest/tests/theme.test modules/simpletest/tests/theme.test
index e286140..a45b16a 100644
--- modules/simpletest/tests/theme.test
+++ modules/simpletest/tests/theme.test
@@ -39,6 +39,21 @@ class TemplateUnitTest extends DrupalWebTestCase {
     $suggestions = theme_get_suggestions($args, 'page');
     $this->assertEqual($suggestions, array('page__node', 'page__node__%', 'page__node__1'), t('Removed invalid \\0 from suggestions'));
   }
+
+  /**
+   * Tests that the page-front template is added to suggestions when on the
+   * front page.
+   */
+  function testFrontPageThemeSuggestion() {
+    $q = $_GET['q'];
+    // Set $_GET['q'] to node because theme_get_suggestions() will query it to
+    // see if we are on the front page.
+    $_GET['q'] = variable_get('site_frontpage', 'node');
+    $suggestions = theme_get_suggestions(explode('/', $_GET['q']), 'page');
+    // Set it back to not annoy the batch runner.
+    $_GET['q'] = $q;
+    $this->assertTrue(in_array('page__front', $suggestions), t('Front page template was suggested.'));
+  }
 }
 
 /**
