diff --git a/core/modules/image/image.admin.inc b/core/modules/image/image.admin.inc
index 9ed3aa9..e90fde8 100644
--- a/core/modules/image/image.admin.inc
+++ b/core/modules/image/image.admin.inc
@@ -11,9 +11,9 @@
 function image_style_list() {
   $page = array();
 
-  $styles = entity_load_multiple('image_style');
+  $image_style_list = array('#theme' => 'image_style_list', '#styles' => entity_load_multiple('image_style'));
   $page['image_style_list'] = array(
-    '#markup' => theme('image_style_list', array('styles' => $styles)),
+    '#markup' => drupal_render($image_style_list),
     '#attached' => array(
       'css' => array(drupal_get_path('module', 'image') . '/image.admin.css' => array()),
     ),
@@ -42,10 +42,11 @@ function image_style_form($form, &$form_state, $style) {
   $form['#attached']['css'][drupal_get_path('module', 'image') . '/image.admin.css'] = array();
 
   // Show the thumbnail preview.
+  $image_style_preview = array('#theme' => 'image_style_preview', '#style' => $style);
   $form['preview'] = array(
     '#type' => 'item',
     '#title' => t('Preview'),
-    '#markup' => theme('image_style_preview', array('style' => $style)),
+    '#markup' => drupal_render($image_style_preview),
   );
 
   $form['label'] = array(
@@ -73,8 +74,9 @@ function image_style_form($form, &$form_state, $style) {
       $form['effects'][$key]['label'] = array(
         '#markup' => check_plain($effect['label']),
       );
+      $summary_theme = array('#theme' => $effect['summary theme'], '#data' => $effect['data']);
       $form['effects'][$key]['summary'] = array(
-        '#markup' => isset($effect['summary theme']) ? theme($effect['summary theme'], array('data' => $effect['data'])) : '',
+        '#markup' => isset($effect['summary theme']) ? drupal_render($summary_theme) : '',
       );
       $form['effects'][$key]['weight'] = array(
         '#type' => 'weight',
@@ -543,8 +545,8 @@ function theme_image_style_list($variables) {
       'data' => t('There are currently no styles. <a href="!url">Add a new one</a>.', array('!url' => url('admin/config/media/image-styles/add'))),
     ));
   }
-
-  return theme('table', array('header' => $header, 'rows' => $rows));
+  $table = array('#theme' => 'table','#header' => $header, 'rows' => $rows);
+  return drupal_render($table);
 }
 
 /**
@@ -595,9 +597,9 @@ function theme_image_style_effects($variables) {
     )));
   }
 
-  $output = theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('id' => 'image-style-effects')));
+  $output = array('#theme' => 'table','#header' => $header, 'rows' => $rows, '#attributes' => array('id' => 'image-style-effects'));
   drupal_add_tabledrag('image-style-effects', 'order', 'sibling', 'image-effect-order-weight');
-  return $output;
+  return drupal_render($output);
 }
 
 /**
@@ -652,10 +654,11 @@ function theme_image_style_preview($variables) {
 
   // Build the preview of the original image.
   $original_url = file_create_url($original_path);
+  $image_build = array('#theme' => 'image', '#uri' => $original_path, '#alt' => t('Sample original image'), '#title' => '', '#attributes' => $original_attributes);
   $output .= '<div class="preview-image-wrapper">';
   $output .= t('original') . ' (' . l(t('view actual size'), $original_url) . ')';
   $output .= '<div class="preview-image original-image" style="' . $original_attributes['style'] . '">';
-  $output .= '<a href="' . $original_url . '">' . theme('image', array('uri' => $original_path, 'alt' => t('Sample original image'), 'title' => '', 'attributes' => $original_attributes)) . '</a>';
+  $output .= '<a href="' . $original_url . '">' . drupal_render($image_build) . '</a>';
   $output .= '<div class="height" style="height: ' . $original_height . 'px"><span>' . $original_image['height'] . 'px</span></div>';
   $output .= '<div class="width" style="width: ' . $original_width . 'px"><span>' . $original_image['width'] . 'px</span></div>';
   $output .= '</div>'; // End preview-image.
@@ -663,10 +666,11 @@ function theme_image_style_preview($variables) {
 
   // Build the preview of the image style.
   $preview_url = file_create_url($preview_file) . '?cache_bypass=' . REQUEST_TIME;
+  $image_style_build = array('#theme' => 'image', '#uri' => $preview_url, '#alt' => t('Sample modified image'), '#title' => '', '#attributes' => $preview_attributes);
   $output .= '<div class="preview-image-wrapper">';
   $output .= check_plain($style->label()) . ' (' . l(t('view actual size'), file_create_url($preview_file) . '?' . time()) . ')';
   $output .= '<div class="preview-image modified-image" style="' . $preview_attributes['style'] . '">';
-  $output .= '<a href="' . file_create_url($preview_file) . '?' . time() . '">' . theme('image', array('uri' => $preview_url, 'alt' => t('Sample modified image'), 'title' => '', 'attributes' => $preview_attributes)) . '</a>';
+  $output .= '<a href="' . file_create_url($preview_file) . '?' . time() . '">' . drupal_render($image_style_build) . '</a>';
   $output .= '<div class="height" style="height: ' . $preview_height . 'px"><span>' . $preview_image['height'] . 'px</span></div>';
   $output .= '<div class="width" style="width: ' . $preview_width . 'px"><span>' . $preview_image['width'] . 'px</span></div>';
   $output .= '</div>'; // End preview-image.
@@ -701,7 +705,8 @@ function theme_image_anchor($variables) {
     }
   }
 
-  return theme('table', array('header' => array(), 'rows' => $rows, 'attributes' => array('class' => array('image-anchor'))));
+  $table = array('#theme' => 'table' , '#header' => array(), '#rows' => $rows, '#attributes' => array('class' => array('image-anchor')));
+  return drupal_render($table);
 }
 
 /**
@@ -735,7 +740,8 @@ function theme_image_resize_summary($variables) {
  */
 function theme_image_scale_summary($variables) {
   $data = $variables['data'];
-  return theme('image_resize_summary', array('data' => $data)) . ' ' . ($data['upscale'] ? '(' . t('upscaling allowed') . ')' : '');
+  $image_resize_summary = array('#theme' => 'image_resize_summary', 'data' => $data);
+  return drupal_render($image_resize_summary) . ' ' . ($data['upscale'] ? '(' . t('upscaling allowed') . ')' : '');
 }
 
 /**
diff --git a/core/modules/image/image.field.inc b/core/modules/image/image.field.inc
index a287620..ecee88c 100644
--- a/core/modules/image/image.field.inc
+++ b/core/modules/image/image.field.inc
@@ -322,30 +322,31 @@ function image_field_widget_process($element, &$form_state, $form) {
   if (!empty($element['#files']) && $element['#preview_image_style']) {
     $file = reset($element['#files']);
     $variables = array(
-      'style_name' => $element['#preview_image_style'],
-      'uri' => $file->uri,
+      '#style_name' => $element['#preview_image_style'],
+      '#uri' => $file->uri,
+      '#theme' => 'image_style',
     );
 
     // Determine image dimensions.
     if (isset($element['#value']['width']) && isset($element['#value']['height'])) {
-      $variables['width'] = $element['#value']['width'];
-      $variables['height'] = $element['#value']['height'];
+      $variables['#width'] = $element['#value']['width'];
+      $variables['#height'] = $element['#value']['height'];
     }
     else {
       $info = image_get_info($file->uri);
 
       if (is_array($info)) {
-        $variables['width'] = $info['width'];
-        $variables['height'] = $info['height'];
+        $variables['#width'] = $info['width'];
+        $variables['#height'] = $info['height'];
       }
       else {
-        $variables['width'] = $variables['height'] = NULL;
+        $variables['#width'] = $variables['#height'] = NULL;
       }
     }
 
     $element['preview'] = array(
       '#type' => 'markup',
-      '#markup' => theme('image_style', $variables),
+      '#markup' => drupal_render($variables),
     );
 
     // Store the dimensions in the form so the file doesn't have to be accessed
diff --git a/core/modules/image/lib/Drupal/image/Plugin/field/widget/ImageWidget.php b/core/modules/image/lib/Drupal/image/Plugin/field/widget/ImageWidget.php
index 8062ff6..5bdf9ea 100644
--- a/core/modules/image/lib/Drupal/image/Plugin/field/widget/ImageWidget.php
+++ b/core/modules/image/lib/Drupal/image/Plugin/field/widget/ImageWidget.php
@@ -59,14 +59,20 @@ public function settingsForm(array $form, array &$form_state) {
   protected function formMultipleElements(EntityInterface $entity, array $items, $langcode, array &$form, array &$form_state) {
     $elements = parent::formMultipleElements($entity, $items, $langcode, $form, $form_state);
 
+    $file_upload_help = array(
+      '#theme' => 'file_upload_help',
+      '#upload_validators' => $elements[0]['#upload_validators'],
+      '#cardinality' => $this->field['cardinality'],
+    );
     if ($this->field['cardinality'] == 1) {
       // If there's only one field, return it as delta 0.
       if (empty($elements[0]['#default_value']['fids'])) {
-        $elements[0]['#description'] = theme('file_upload_help', array('description' => $this->instance['description'], 'upload_validators' => $elements[0]['#upload_validators'], 'cardinality' => $this->field['cardinality']));
+        $file_upload_help['#description'] = $this->instance['description'];
+        $elements[0]['#description'] = drupal_render($file_upload_help);
       }
     }
     else {
-      $elements['#file_upload_description'] = theme('file_upload_help', array('upload_validators' => $elements[0]['#upload_validators'], 'cardinality' => $this->field['cardinality']));
+      $elements['#file_upload_description'] = drupal_render($file_upload_help);
     }
 
     return $elements;
diff --git a/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php b/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php
index b679fb9..c393df6 100644
--- a/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php
+++ b/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php
@@ -60,11 +60,12 @@ function _testImageFieldFormatters($scheme) {
     // Test that the default formatter is being used.
     $image_uri = file_load($node->{$field_name}[Language::LANGCODE_NOT_SPECIFIED][0]['fid'])->uri;
     $image_info = array(
-      'uri' => $image_uri,
-      'width' => 40,
-      'height' => 20,
+      '#theme' => 'image',
+      '#uri' => $image_uri,
+      '#width' => 40,
+      '#height' => 20,
     );
-    $default_output = theme('image', $image_info);
+    $default_output = drupal_render($image_info);
     $this->assertRaw($default_output, 'Default formatter displaying correctly on full node view.');
 
     // Test the image linked to file formatter.
@@ -76,7 +77,7 @@ function _testImageFieldFormatters($scheme) {
     $display->setComponent($field_name, $display_options)
       ->save();
 
-    $default_output = l(theme('image', $image_info), file_create_url($image_uri), array('html' => TRUE));
+    $default_output = l(drupal_render($image_info), file_create_url($image_uri), array('html' => TRUE));
     $this->drupalGet('node/' . $nid);
     $this->assertRaw($default_output, 'Image linked to file formatter displaying correctly on full node view.');
     // Verify that the image can be downloaded.
@@ -100,7 +101,7 @@ function _testImageFieldFormatters($scheme) {
     $display_options['settings']['image_link'] = 'content';
     $display->setComponent($field_name, $display_options)
       ->save();
-    $default_output = l(theme('image', $image_info), 'node/' . $nid, array('html' => TRUE, 'attributes' => array('class' => 'active')));
+    $default_output = l(drupal_render($image_info), 'node/' . $nid, array('html' => TRUE, 'attributes' => array('class' => 'active')));
     $this->drupalGet('node/' . $nid);
     $this->assertRaw($default_output, 'Image linked to content formatter displaying correctly on full node view.');
 
@@ -113,11 +114,12 @@ function _testImageFieldFormatters($scheme) {
     // Ensure the derivative image is generated so we do not have to deal with
     // image style callback paths.
     $this->drupalGet(image_style_url('thumbnail', $image_uri));
-    $image_info['uri'] = $image_uri;
-    $image_info['width'] = 100;
-    $image_info['height'] = 50;
-    $image_info['style_name'] = 'thumbnail';
-    $default_output = theme('image_style', $image_info);
+    $image_info['#uri'] = $image_uri;
+    $image_info['#width'] = 100;
+    $image_info['#height'] = 50;
+    $image_info['#style_name'] = 'thumbnail';
+    $image_info['#theme'] = 'image_style';
+    $default_output = drupal_render($image_info);
     $this->drupalGet('node/' . $nid);
     $this->assertRaw($default_output, 'Image style thumbnail formatter displaying correctly on full node view.');
 
@@ -165,28 +167,30 @@ function testImageFieldSettings() {
     // style.
     $node = node_load($nid, TRUE);
     $image_info = array(
-      'uri' => file_load($node->{$field_name}[Language::LANGCODE_NOT_SPECIFIED][0]['fid'])->uri,
-      'width' => 220,
-      'height' => 110,
-      'style_name' => 'medium',
+      '#uri' => file_load($node->{$field_name}[Language::LANGCODE_NOT_SPECIFIED][0]['fid'])->uri,
+      '#width' => 220,
+      '#height' => 110,
+      '#style_name' => 'medium',
+      '#theme' => 'image_style',
     );
-    $default_output = theme('image_style', $image_info);
+    $default_output = drupal_render($image_info);
     $this->assertRaw($default_output, "Preview image is displayed using 'medium' style.");
 
     // Add alt/title fields to the image and verify that they are displayed.
     $image_info = array(
-      'uri' => file_load($node->{$field_name}[Language::LANGCODE_NOT_SPECIFIED][0]['fid'])->uri,
-      'alt' => $this->randomName(),
-      'title' => $this->randomName(),
-      'width' => 40,
-      'height' => 20,
+      '#uri' => file_load($node->{$field_name}[Language::LANGCODE_NOT_SPECIFIED][0]['fid'])->uri,
+      '#alt' => $this->randomName(),
+      '#title' => $this->randomName(),
+      '#width' => 40,
+      '#height' => 20,
+      '#theme' => 'image',
     );
     $edit = array(
-      $field_name . '[' . Language::LANGCODE_NOT_SPECIFIED . '][0][alt]' => $image_info['alt'],
-      $field_name . '[' . Language::LANGCODE_NOT_SPECIFIED . '][0][title]' => $image_info['title'],
+      $field_name . '[' . Language::LANGCODE_NOT_SPECIFIED . '][0][alt]' => $image_info['#alt'],
+      $field_name . '[' . Language::LANGCODE_NOT_SPECIFIED . '][0][title]' => $image_info['#title'],
     );
     $this->drupalPost('node/' . $nid . '/edit', $edit, t('Save and keep published'));
-    $default_output = theme('image', $image_info);
+    $default_output = drupal_render($image_info);
     $this->assertRaw($default_output, 'Image displayed using user supplied alt and title attributes.');
 
     // Verify that alt/title longer than allowed results in a validation error.
@@ -234,7 +238,8 @@ function testImageFieldDefaultImage() {
     $field = field_info_field($field_name);
     $image = file_load($field['settings']['default_image'][0]);
     $this->assertTrue($image->status == FILE_STATUS_PERMANENT, 'The default image status is permanent.');
-    $default_output = theme('image', array('uri' => $image->uri));
+    $image_build = array('#theme' => 'image', '#uri' => $image->uri);
+    $default_output = drupal_render($image_build);
     $this->drupalGet('node/' . $node->nid);
     $this->assertRaw($default_output, 'Default image displayed when no user supplied image is present.');
 
@@ -243,11 +248,12 @@ function testImageFieldDefaultImage() {
     $nid = $this->uploadNodeImage($images[1], $field_name, 'article');
     $node = node_load($nid, TRUE);
     $image_info = array(
-      'uri' => file_load($node->{$field_name}[Language::LANGCODE_NOT_SPECIFIED][0]['fid'])->uri,
-      'width' => 40,
-      'height' => 20,
+      '#uri' => file_load($node->{$field_name}[Language::LANGCODE_NOT_SPECIFIED][0]['fid'])->uri,
+      '#width' => 40,
+      '#height' => 20,
+      '#theme' => 'image',
     );
-    $image_output = theme('image', $image_info);
+    $image_output = drupal_render($image_info);
     $this->drupalGet('node/' . $nid);
     $this->assertNoRaw($default_output, 'Default image is not displayed when user supplied image is present.');
     $this->assertRaw($image_output, 'User supplied image is displayed.');
@@ -280,7 +286,8 @@ function testImageFieldDefaultImage() {
     // Create a new node with no image attached and ensure that default private
     // image is displayed.
     $node = $this->drupalCreateNode(array('type' => 'article'));
-    $default_output = theme('image', array('uri' => $image->uri));
+    $image_build = array('#theme' => 'image', '#uri' => $image->uri);
+    $default_output = drupal_render($image_build);;
     $this->drupalGet('node/' . $node->nid);
     $this->assertRaw($default_output, 'Default private image displayed when no user supplied image is present.');
   }
