diff --git a/core/modules/image/image.admin.inc b/core/modules/image/image.admin.inc
index 4d39d05..dbd982a 100644
--- a/core/modules/image/image.admin.inc
+++ b/core/modules/image/image.admin.inc
@@ -15,7 +15,8 @@ function image_style_list() {
 
   $styles = entity_load_multiple('image_style');
   $page['image_style_list'] = array(
-    '#markup' => theme('image_style_list', array('styles' => $styles)),
+    '#theme' => 'image_style_list',
+    '#styles' => $styles,
     '#attached' => array(
       'css' => array(drupal_get_path('module', 'image') . '/css/image.admin.css' => array()),
     ),
@@ -47,7 +48,8 @@ function image_style_form($form, &$form_state, $style) {
   $form['preview'] = array(
     '#type' => 'item',
     '#title' => t('Preview'),
-    '#markup' => theme('image_style_preview', array('style' => $style)),
+    '#theme' => 'image_style_preview',
+    '#style' => $style,
   );
 
   $form['label'] = array(
@@ -75,9 +77,16 @@ function image_style_form($form, &$form_state, $style) {
       $form['effects'][$key]['label'] = array(
         '#markup' => check_plain($effect['label']),
       );
-      $form['effects'][$key]['summary'] = array(
-        '#markup' => isset($effect['summary theme']) ? theme($effect['summary theme'], array('data' => $effect['data'])) : '',
-      );
+      if (isset($effect['summary theme'])) {
+        $form['effects'][$key]['summary'] = array(
+          '#theme' => $effect['summary theme'],
+          '#data' => $effect['data'],
+        );
+      } else {
+        $form['effects'][$key]['summary'] = array(
+          '#markup' => '',
+        );
+      }
       $form['effects'][$key]['weight'] = array(
         '#type' => 'weight',
         '#title' => t('Weight for @title', array('@title' => $effect['label'])),
@@ -546,8 +555,13 @@ 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'))),
     ));
   }
+  $table = array(
+    '#theme' => 'table',
+    '#header' => $header,
+    '#rows' => $rows,
+  );
 
-  return theme('table', array('header' => $header, 'rows' => $rows));
+  return drupal_render($table);
 }
 
 /**
@@ -598,9 +612,14 @@ function theme_image_style_effects($variables) {
     )));
   }
 
-  $output = theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('id' => 'image-style-effects')));
+  $table = 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($table);
 }
 
 /**
@@ -655,10 +674,17 @@ function theme_image_style_preview($variables) {
 
   // Build the preview of the original image.
   $original_url = file_create_url($original_path);
+  $image = 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 .= l($image, $original_url, array('html' => TRUE));
   $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.
@@ -666,10 +692,17 @@ function theme_image_style_preview($variables) {
 
   // Build the preview of the image style.
   $preview_url = file_create_url($preview_file) . '?cache_bypass=' . REQUEST_TIME;
+  $preview = 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 .= check_plain($style->label()) . ' (' . l(t('view actual size'), $preview_url ) . ')';
   $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 .= l($preview, $preview_url, array('html' => TRUE));
   $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.
@@ -704,7 +737,13 @@ 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);
 }
 
 /**
@@ -737,8 +776,11 @@ function theme_image_resize_summary($variables) {
  * @ingroup themeable
  */
 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' => $variables['data'],
+  );
+  return drupal_render($image_resize_summary) . ($variables['data']['upscale'] ? ' (' . t('upscaling allowed') . ')' : '');
 }
 
 /**
@@ -751,7 +793,11 @@ function theme_image_scale_summary($variables) {
  * @ingroup themeable
  */
 function theme_image_crop_summary($variables) {
-  return theme('image_resize_summary', $variables);
+  $image_resize_summary = array(
+    '#theme' => 'image_resize_summary',
+    '#data' => $variables['data'],
+  );
+  return drupal_render($image_resize_summary);
 }
 
 /**
diff --git a/core/modules/image/image.field.inc b/core/modules/image/image.field.inc
index 9609960..979107f 100644
--- a/core/modules/image/image.field.inc
+++ b/core/modules/image/image.field.inc
@@ -313,7 +313,11 @@ function image_field_widget_process($element, &$form_state, $form) {
     }
 
     $element['preview'] = array(
-      '#markup' => theme('image_style', $variables),
+      '#theme' => 'image_style',
+      '#width' => $variables['width'],
+      '#height' => $variables['height'],
+      '#style_name' => $variables['style_name'],
+      '#uri' => $variables['uri'],
     );
 
     // Store the dimensions in the form so the file doesn't have to be accessed
@@ -426,22 +430,32 @@ function theme_image_widget($variables) {
  */
 function theme_image_formatter($variables) {
   $item = $variables['item'];
+  $image = array();
 
-  // Do not output an empty 'title' attribute.
-  if (isset($item['title']) && drupal_strlen($item['title']) == 0) {
-    unset($item['title']);
+  // Include attributes if not empty
+  if (isset($item['width'])) {
+    $image['#width'] = $item['width'];
   }
-
-  if (isset($item['entity']) && empty($item['uri'])) {
-    $item['uri'] = $item['entity']->getFileUri();
+  if (isset($item['height'])) {
+    $image['#height'] = $item['height'];
   }
-
-  if ($variables['image_style']) {
-    $item['style_name'] = $variables['image_style'];
-    $output = theme('image_style', $item);
+  if (isset($item['alt'])) {
+    $image['#alt'] = $item['alt'];
   }
-  else {
-    $output = theme('image', $item);
+  if (isset($item['title']) && drupal_strlen($item['title']) != 0) {
+    $image['#title'] = $item['title'];
+  }
+  if (!empty($item['uri'])) {
+    $image['#uri'] = $item['uri'];
+  }
+  elseif (isset($item['entity'])) {
+    $image['#uri'] = $item['entity']->getFileUri();
+  }
+  if ($variables['image_style']) {
+    $image['#style_name'] = $variables['image_style'];
+    $image['#theme'] = 'image_style';
+  } else {
+    $image['#theme'] = 'image';
   }
 
   // The link path and link options are both optional, but for the options to be
@@ -451,7 +465,9 @@ function theme_image_formatter($variables) {
     $options = isset($variables['path']['options']) ? $variables['path']['options'] : array();
     // When displaying an image inside a link, the html option must be TRUE.
     $options['html'] = TRUE;
-    $output = l($output, $path, $options);
+    $output = l($image, $path, $options);
+  } else {
+    $output = drupal_render($image);
   }
 
   return $output;
