diff --git a/imce.install b/imce.install
index 9062e88..1a5ea26 100644
--- a/imce.install
+++ b/imce.install
@@ -122,4 +122,16 @@ function imce_update_7002() {
       variable_set('imce_roles_profiles', $roles);
     }
   }
-}
\ No newline at end of file
+}
+
+/**
+ * Adds image style path token variable if IMCE is enabled
+ */
+function imce_update_7003() {
+  if (module_exists('imce')) {
+    if (!array_key_exists('imce_process_path_tokens', $funcs = variable_get('imce_custom_process', array()))) {
+      $funcs['imce_process_path_tokens'] = TRUE;
+    }
+    variable_set('imce_custom_process', $funcs);
+  }
+}
diff --git a/imce.module b/imce.module
index d850f92..0ac6b54 100644
--- a/imce.module
+++ b/imce.module
@@ -175,6 +175,34 @@ function imce_textarea($element) {
   return $element;
 }
 
+ /**
+ * Custom path tokens process. Sets image style path tokens for preview images.
+ */
+function imce_process_path_tokens(&$imce) {
+  $imce_preview_style = variable_get('imce_settings_preview_style', '');
+  if ($imce_preview_style && !empty($imce['furl']) && !empty($imce['files'])) {
+    $uri_paths = array();
+    foreach ($imce['files'] as $file) {
+      $uri_paths[] = file_build_uri($imce['dir'] . '/' . $file['name']);
+    }
+    $uris = db_select('file_managed', 'fm')
+      ->condition('uri', $uri_paths)
+      ->fields('fm', array('uri', 'filename'))
+      ->execute()
+      ->fetchAllKeyed();
+    foreach ($imce['files'] as &$file) {
+      if (!variable_get('image_suppress_itok_output', FALSE)) {
+        $image_uri = $imce['dir'] == '.' ? file_build_uri($file['name']) : file_build_uri($imce['dir'] . '/' . $file['name']);
+        $file['itok'] = !empty($uris[$image_uri]) || $imce['dir']== '.' ? image_style_path_token($imce_preview_style, $image_uri) : '';
+      }
+      else {
+        $file['itok'] = '';
+      }
+    }
+  }
+}
+
+
 /**
  * Returns the configuration profile.
  *
diff --git a/inc/imce.admin.inc b/inc/imce.admin.inc
index fddf811..3488f81 100644
--- a/inc/imce.admin.inc
+++ b/inc/imce.admin.inc
@@ -109,6 +109,17 @@ function imce_admin_form($form, &$form_state) {
     '#default_value' => variable_get('imce_settings_absurls', 0),
     '#description' => t('Check if you want IMCE to return absolute file URLs.'),
   );
+  $styles = image_styles();
+  foreach ($styles as &$style) {
+    $style = $style['label'];
+  }
+  $form['common']['preview_style'] = array(
+    '#type' => 'select',
+    '#title' => t('File browser image preview style'),
+    '#options' => array_merge(array('' => t('None')), $styles),
+    '#default_value' => variable_get('imce_settings_preview_style', NULL),
+    '#description' => t('Select image style to use as preview in the file browser. Select "None" for no preview.'),
+  );
   $form['common']['image_metadata'] = array(
     '#type' => 'checkbox',
     '#title' => t('Disable image metada'),
@@ -241,6 +252,7 @@ function imce_admin_submit($form, &$form_state) {
   variable_set('imce_settings_disable_private', $form_state['values']['disable_private']);
   variable_set('imce_settings_admin_theme', $form_state['values']['admin_theme']);
   variable_set('imce_settings_menu_link', $form_state['values']['imce_link']);
+  variable_set('imce_settings_preview_style', $form_state['values']['preview_style']);
   variable_set('imce_disable_image_info', $form_state['values']['image_metadata']);
   drupal_set_message(t('Changes have been saved.'));
 }
diff --git a/inc/imce.page.inc b/inc/imce.page.inc
index 9f5dbc2..82b8020 100644
--- a/inc/imce.page.inc
+++ b/inc/imce.page.inc
@@ -92,6 +92,10 @@ function imce_content($user, $scheme = NULL, $jsop = NULL) {
 
   drupal_add_js($imce_ref, 'setting');
 
+  if ($imce_preview_style = variable_get('imce_settings_preview_style', '')) {
+    drupal_add_js(array('imce' => array('prvstyle' => $imce_preview_style)), 'setting');
+  }
+
   return $content;
 }
 
diff --git a/js/imce_extras.js b/js/imce_extras.js
index afc9fde..f9a9b46 100644
--- a/js/imce_extras.js
+++ b/js/imce_extras.js
@@ -241,16 +241,44 @@ imce.cookie = function (name, value) {
   document.cookie = name +'='+ encodeURIComponent(value) +'; expires='+ (new Date(new Date() * 1 + 15 * 86400000)).toUTCString() +'; path=' + Drupal.settings.basePath + 'imce';//set
 };
 
+imce.getDimensionsImgDataDisable = async function (row, dimension) {
+  var img;
+  var imageLoadPromise = new Promise(resolve => {
+    img = new Image();
+    img.src = imce.getURL(row.id);
+    img.onload = resolve;
+  });
+  await imageLoadPromise;
+  return dimension == "w" ? img.naturalWidth : img.naturalHeight;
+}
+
 //view thumbnails(smaller than tMaxW x tMaxH) inside the rows.
 //Large images can also be previewed by setting imce.vars.prvstyle to a valid image style(imagecache preset)
 imce.thumbRow = function (row) {
-  var w = row.cells[2].innerHTML * 1;
+  imce.vars.prvstyle = Drupal.settings.imce.prvstyle;
+  var w;
+  if (row.cells[2].innerHTML == "-") {
+    imce.getDimensionsImgDataDisable(row, "w").then(function (result) {
+      w = result;
+    });
+  }else
+    w = row.cells[2].innerHTML * 1;
   if (!w) return;
-  var h = row.cells[3].innerHTML * 1;
+  var h;
+  if (row.cells[3].innerHTML == "-") {
+    imce.getDimensionsImgDataDisable(row, "h").then(function (result) {
+      h = result;
+    });
+  } else
+    h = row.cells[3].innerHTML * 1;
+  var itok = jQuery(row).data('itok');
+  if (typeof itok === 'undefined') {
+    return;
+  }
   if (imce.vars.tMaxW < w || imce.vars.tMaxH < h) {
     if (!imce.vars.prvstyle || imce.conf.dir.indexOf('styles') == 0) return;
     var img = new Image();
-    img.src = imce.imagestyleURL(imce.getURL(row.id), imce.vars.prvstyle);
+    img.src = imce.imagestyleURL(imce.getURL(row.id), imce.vars.prvstyle) + '?itok=' + itok;
     img.className = 'imagestyle-' + imce.vars.prvstyle;
   }
   else {
diff --git a/tpl/imce-file-list.tpl.php b/tpl/imce-file-list.tpl.php
index 7cb4851..0712a35 100644
--- a/tpl/imce-file-list.tpl.php
+++ b/tpl/imce-file-list.tpl.php
@@ -6,7 +6,7 @@
  */
 
 // Keep this line.
-$imce =& $imce_ref['imce'];
+$imce = &$imce_ref['imce'];
 
 /*
  * Although the file list table here is available for theming,
@@ -19,16 +19,18 @@ $imce =& $imce_ref['imce'];
  */
 ?>
 
-<table id="file-list" class="files"><tbody><?php
-if ($imce['perm']['browse'] && !empty($imce['files'])) {
-  foreach ($imce['files'] as $name => $file) {?>
-  <tr id="<?php print $raw = rawurlencode($file['name']); ?>">
-    <td class="name"><?php print $raw; ?></td>
-    <td class="size" id="<?php print $file['size']; ?>"><?php print format_size($file['size']); ?></td>
-    <td class="width"><?php print $file['width']; ?></td>
-    <td class="height"><?php print $file['height']; ?></td>
-    <td class="date" id="<?php print $file['date']; ?>"><?php print format_date($file['date'], 'short'); ?></td>
-  </tr><?php
-  }
-}?>
-</tbody></table>
+<table id="file-list" class="files">
+  <tbody><?php
+    if ($imce['perm']['browse'] && !empty($imce['files'])) {
+      foreach ($imce['files'] as $name => $file) { $a = $file['itok'];?>
+        <tr id="<?php print $raw = rawurlencode($file['name']); ?>" <?php if (!empty($file['itok'])) : ?> data-itok="<?php print $file['itok']; ?>" <?php endif; ?>>
+          <td class="name"><?php print $raw; ?></td>
+          <td class="size" id="<?php print $file['size']; ?>"><?php print format_size($file['size']); ?></td>
+          <td class="width"><?php print $file['width']; ?></td>
+          <td class="height"><?php print $file['height']; ?></td>
+          <td class="date" id="<?php print $file['date']; ?>"><?php print format_date($file['date'], 'short'); ?></td>
+        </tr><?php
+      }
+    } ?>
+  </tbody>
+</table>
