diff --git a/js/responsive-preview.js b/js/responsive-preview.js
new file mode 100644
index 0000000..c073c1c
--- /dev/null
+++ b/js/responsive-preview.js
@@ -0,0 +1,31 @@
+(function($) {
+  Drupal.behaviors.pagepreview_responsive_preview = {
+    attach: function(context, settings) {
+      $(context).find('.js-pagepreview-responsive-preview').once('pagepreview_responsive_preview', function () {
+        var $controls = $(this).find('button.responsive-preview-device');
+        var $preview_pane = $(this).find('.js-pagepreview-responsive-preview-iframe-wrapper-width');
+        $controls.click(function() {
+          var $button = $(this);
+          var data = $button.data();
+          var dppx = data['responsive-preview-dppx'];
+
+          var new_width = Math.floor(data['responsive-preview-width'] / data['responsive-preview-dppx']);
+          var new_height = Math.floor(data['responsive-preview-height'] / data['responsive-preview-dppx']);
+          if ((new_width == $preview_pane.width()) && (new_height == $preview_pane.height())) {
+            // Switch orientation.
+            new_height = Math.floor(data['responsive-preview-width'] / data['responsive-preview-dppx']);
+            new_width = Math.floor(data['responsive-preview-height'] / data['responsive-preview-dppx']);
+          }
+
+          $preview_pane.width(new_width);
+          $preview_pane.height(new_height);
+
+        });
+
+
+      });
+    }
+  };
+
+
+})(jQuery);
\ No newline at end of file
diff --git a/pagepreview.module b/pagepreview.module
index cf2cad2..339a483 100644
--- a/pagepreview.module
+++ b/pagepreview.module
@@ -55,7 +55,66 @@ function pagepreview_node_form_build_preview($form, &$form_state) {
   $preview_id = md5(json_encode($form_state['values']) . mt_rand());
   cache_set($preview_id, $node, 'cache_pagepreview', CACHE_TEMPORARY);
 
-  $form_state['node_preview'] = '<iframe class="pagepreview-preview" src="' . base_path() . 'pagepreview/' . $preview_id . '"></iframe>';
+  if (module_exists('responsive_preview')) {
+    // Use the defined responsive_preview devices to provide nice resizing.
+    $responsive_links = responsive_preview_get_devices_list();
+    unset($responsive_links['configure_link']);
+    $buttons = array(
+      '#theme' => 'item_list',
+      '#items' => $responsive_links,
+      '#attributes' => array(
+        'class' => array(
+          'responsive-preview-options',
+          'inline',
+        ),
+      ),
+    );
+    $render = array(
+      '#type' => 'container',
+      '#attributes' => array(
+        'class' => array(
+          'pagepreview-responsive-preview-wrapper',
+          'js-pagepreview-responsive-preview',
+        ),
+      ),
+      '#attached' => array(
+        'library' => array(
+          array('pagepreview', 'responsive-preview'),
+        ),
+      ),
+    );
+    $render['buttons'] = $buttons;
+    $render['iframe-wrapper'] = array(
+      '#type' => 'container',
+      '#attributes' => array(
+        'class' => array(
+          'pagepreview-responsive-preview-iframe-wrapper',
+        ),
+      ),
+    );
+    $render['iframe-wrapper']['js'] = array(
+      '#type' => 'container',
+      '#attributes' => array(
+        'class' => array(
+          'js-pagepreview-responsive-preview-iframe-wrapper-width',
+        ),
+      ),
+    );
+    $render['iframe-wrapper']['js']['iframe'] = array(
+      '#theme' => 'html_tag',
+      '#tag' => 'iframe',
+      '#attributes' => array(
+        'class' => array('pagepreview-preview'),
+        'src' => base_path() . 'pagepreview/' . $preview_id,
+      ),
+      '#value' => '',
+    );
+    $form_state['node_preview'] = render($render);
+  }
+  else {
+    $form_state['node_preview'] = '<iframe class="pagepreview-preview" src="' . base_path() . 'pagepreview/' . $preview_id . '"></iframe>';
+  }
+
   $form_state['rebuild'] = TRUE;
 }
 
@@ -190,3 +249,24 @@ function pagepreview_build_preview($node) {
     return $output;
   }
 }
+
+/**
+ * Implements hook_library().
+ */
+function pagepreview_library() {
+  $path = drupal_get_path('module', 'pagepreview');
+  $options = array();
+
+  $libraries['responsive-preview'] = array(
+    'title' => 'Preview layouts',
+    'version' => VERSION,
+    'css' => array(
+      $path . '/pagepreview.responsive-preview.css',
+    ),
+    'js' => array(
+      $path . '/js/responsive-preview.js' => $options,
+    ),
+  );
+
+  return $libraries;
+}
diff --git a/pagepreview.responsive-preview.css b/pagepreview.responsive-preview.css
new file mode 100644
index 0000000..a3f4e02
--- /dev/null
+++ b/pagepreview.responsive-preview.css
@@ -0,0 +1,22 @@
+.js-pagepreview-responsive-preview-iframe-wrapper-width {
+  margin: 0 auto;
+  height: 480px;
+  border: 1px solid #aaa;
+}
+
+.pagepreview-responsive-preview-wrapper iframe.pagepreview-preview {
+  width: 100%;
+  height: 100%;
+  border: none;
+}
+
+.pagepreview-responsive-preview-wrapper .item-list {
+  text-align: center;
+  margin: 1em;
+}
+
+
+
+.responsive-preview-options {
+
+}
\ No newline at end of file
