diff --git a/core/modules/file/file.module b/core/modules/file/file.module
index 078a245442852242f779adbddfb6059bc50b1f32..2141cae59f13108e5797f5a4836f7e9ce4daa72f 100644
--- a/core/modules/file/file.module
+++ b/core/modules/file/file.module
@@ -72,6 +72,7 @@ function file_element_info() {
     '#progress_message' => NULL,
     '#upload_validators' => array(),
     '#upload_location' => NULL,
+    '#size' => 22,
     '#extended' => FALSE,
     '#attached' => array(
       'css' => array($file_path . '/file.admin.css'),
@@ -443,7 +444,7 @@ function file_managed_file_process($element, &$form_state, $form) {
     '#type' => 'file',
     '#title' => t('Choose a file'),
     '#title_display' => 'invisible',
-    '#size' => 22,
+    '#size' => $element['#size'],
     '#theme_wrappers' => array(),
     '#weight' => -10,
   );
diff --git a/core/modules/file/tests/file.test b/core/modules/file/tests/file.test
index 538118a0f2a46c1a85c63bc04a6cc02e2b975c05..459609b084805c8b06a4dc867c9fdc46c24f8fd2 100644
--- a/core/modules/file/tests/file.test
+++ b/core/modules/file/tests/file.test
@@ -239,6 +239,10 @@ class FileManagedFileElementTestCase extends FileFieldTestCase {
    * Tests the managed_file element type.
    */
   function testManagedFile() {
+    // Check that $element['#size'] is passed to the child upload element.
+    $this->drupalGet('file/test');
+    $this->assertFieldByXpath('//input[@name="files[nested_file]" and @size="13"]', NULL, 'The custom #size attribute is passed to the child upload element.');
+
     // Perform the tests with all permutations of $form['#tree'] and
     // $element['#extended'].
     foreach (array(0, 1) as $tree) {
diff --git a/core/modules/file/tests/file_module_test.module b/core/modules/file/tests/file_module_test.module
index d75e929dc09f4f4b54bb3794deb98ad10a5fde13..490ef42991199db1f13f7121dfd1a3eeecd66fd0 100644
--- a/core/modules/file/tests/file_module_test.module
+++ b/core/modules/file/tests/file_module_test.module
@@ -37,6 +37,7 @@ function file_module_test_form($form, &$form_state, $tree = TRUE, $extended = FA
     '#upload_location' => 'public://test',
     '#progress_message' => t('Please wait...'),
     '#extended' => (bool) $extended,
+    '#size' => 13,
   );
   if ($default_fid) {
     $form['nested']['file']['#default_value'] = $extended ? array('fid' => $default_fid) : $default_fid;