diff --git a/modules/simpletest/drupal_web_test_case.php b/modules/simpletest/drupal_web_test_case.php
index 302a2e86f7e487ff20e24136ac571c89e3b5eddf..e48765334abfda6eeb0fde4c72c08b6806158333 100644
--- a/modules/simpletest/drupal_web_test_case.php
+++ b/modules/simpletest/drupal_web_test_case.php
@@ -1076,7 +1076,7 @@ protected function setUp() {
     variable_set('smtp_library', drupal_get_path('module', 'simpletest') . '/drupal_web_test_case.php');
 
     // Use temporary files directory with the same prefix as database.
-    variable_set('file_directory_path', $this->originalFileDirectory . '/' . $db_prefix);
+    variable_set('file_directory_path', $this->originalFileDirectory . '/simpletest/' . substr($db_prefix, 10));
     $directory = file_directory_path();
     // Create the files directory.
     file_check_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
diff --git a/modules/simpletest/simpletest.module b/modules/simpletest/simpletest.module
index 496434fe1785411e03d9e0657277d4e16257e8a5..717474912f703ee1e369a47469ee4a070fbcd580 100644
--- a/modules/simpletest/simpletest.module
+++ b/modules/simpletest/simpletest.module
@@ -360,11 +360,12 @@ function simpletest_clean_database() {
  * Find all leftover temporary directories and remove them.
  */
 function simpletest_clean_temporary_directories() {
-  $files = scandir(file_directory_path());
+  $directory = file_directory_path() . '/simpletest';
+  $files = scandir($directory);
   $count = 0;
   foreach ($files as $file) {
-    $path = file_directory_path() . '/' . $file;
-    if (is_dir($path) && preg_match('/^simpletest\d+/', $file)) {
+    $path = "$directory/$file";
+    if (is_dir($path) && is_numeric($file)) {
       file_unmanaged_delete_recursive($path);
       $count++;
     }