diff --git a/js/modal_forms_popup.js b/js/modal_forms_popup.js
index cb7d0e2..87c2235 100644
--- a/js/modal_forms_popup.js
+++ b/js/modal_forms_popup.js
@@ -2,7 +2,7 @@
 * Provide the HTML to create the modal dialog.
 */
 Drupal.theme.prototype.ModalFormsPopup = function () {
-  var html = ''
+  var html = '';
 
   html += '<div id="ctools-modal" class="popups-box">';
   html += '  <div class="ctools-modal-content modal-forms-modal-content">';
diff --git a/js/modal_forms_webform.js b/js/modal_forms_webform.js
new file mode 100644
index 0000000..259cb12
--- /dev/null
+++ b/js/modal_forms_webform.js
@@ -0,0 +1,11 @@
+(function ($) {
+
+Drupal.behaviors.initModalFormsWebform = {
+  attach: function (context, settings) {
+    $("a[href^='/webform/'], a[href^='?q=webform/']", context).once('init-modal-forms-webform', function () {
+      this.href = this.href.replace(/webform\/(\d+)$/,'modal_forms/nojs/webform/$1');
+    }).addClass('ctools-use-modal ctools-modal-modal-popup-small');
+  }
+};
+
+})(jQuery);
\ No newline at end of file
diff --git a/modal_forms.admin.inc b/modal_forms.admin.inc
index 0b5e9d7..3410c6e 100644
--- a/modal_forms.admin.inc
+++ b/modal_forms.admin.inc
@@ -65,6 +65,17 @@ function modal_forms_admin_settings() {
     '#description' => t('Automatically activate Modal forms for links to contact.'),
   );
 
+  $form['modal_forms_webform_settings'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Webform links settings')
+  );
+  $form['modal_forms_webform_settings']['modal_forms_webform'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Enable for webform links'),
+    '#default_value' => variable_get('modal_forms_webform', 0),
+    '#description' => t('Automatically activate Modal forms for links to webforms with a path structured /webform/nid.'),
+  );
+
   $form['modal_forms_advanced_settings'] = array(
     '#type' => 'fieldset',
     '#title' => t('Advanced settings'),
diff --git a/modal_forms.module b/modal_forms.module
index 3afdc01..ec152eb 100644
--- a/modal_forms.module
+++ b/modal_forms.module
@@ -59,6 +59,23 @@ function modal_forms_menu() {
     'file' => 'modal_forms.pages.inc',
     'type' => MENU_CALLBACK,
   );
+  $items['modal_forms/%ctools_js/webform/%node'] = array(
+    'title' => 'Webform view',
+    'page callback' => 'modal_forms_view_webform',
+    'page arguments' => array(1, 3),
+    'access callback' => 'node_access',
+    'access arguments' => array('view', 3),
+    'file' => 'modal_forms.pages.inc',
+    'type' => MENU_CALLBACK,
+  );
+  $items['modal_forms/%ctools_js/dismiss'] = array(
+    'title' => 'Webform view',
+    'page callback' => 'modal_forms_dismiss',
+    'page arguments' => array(1),
+    'access callback' => TRUE,
+    'file' => 'modal_forms.pages.inc',
+    'type' => MENU_CALLBACK,
+  );
 
   return $items;
 }
@@ -220,5 +237,9 @@ function _modal_forms_doheader() {
     drupal_add_js($path . '/js/modal_forms_contact.js', array('weight' => -20));
   }
 
+  if (variable_get('modal_forms_webform', 0)) {
+    drupal_add_js($path . '/js/modal_forms_webform.js', array('weight' => -20));    
+  }
+
   $already_added = TRUE;
 }
diff --git a/modal_forms.pages.inc b/modal_forms.pages.inc
index 964ffd7..80b658e 100644
--- a/modal_forms.pages.inc
+++ b/modal_forms.pages.inc
@@ -133,3 +133,65 @@ function modal_forms_contact($js = NULL) {
   print ajax_render($output);
   exit;
 }
+
+/**
+ * Modal display of the node's webform.
+ *
+ * @param $node
+ *   A node object.
+ */
+function modal_forms_view_webform($js = NULL, $node) {
+  // Fall back if $js is not set.
+  if (!$js) {
+    return drupal_get_form('webform_client_form', $node, FALSE);
+  }
+  ctools_include('modal');
+  ctools_include('ajax');
+  if (empty($node->webform['components'])) {
+    // No webform or no components.
+    $output[] = ctools_modal_command_display(t('Webform'), t('No webform found.'));
+    print ajax_render($output);
+    exit;
+  }
+  // Get webform defaults.
+  $title = check_plain($node->title);
+  $text = check_markup($node->webform['confirmation'], $node->webform['confirmation_format'], '', TRUE);
+  $form_state = array(
+    'title' => $title,
+    'ajax' => TRUE,
+  );
+  // Prevent webform redirect.
+  $GLOBALS['conf']['webform_blocks']['client-block-' . $node->nid]['pages_block'] = 1;
+  $node->webform_block = TRUE;
+  // Pass required parameters.
+  $form_state['build_info']['args'] = array($node, FALSE);
+  $output = ctools_modal_form_wrapper('webform_client_form', $form_state);
+
+  if (!empty($form_state['executed'])) {
+    // We'll just overwrite the form output if it was successful.
+    $output = array();
+    ctools_add_js('ajax-responder');
+    $output[] = ctools_modal_command_display($title, $text . ctools_ajax_text_button(t('Close'), 'modal_forms/nojs/dismiss', t('Close')));
+    // @todo Add support for redirect. Require some magic.
+    // Copied from webform_client_form_submit().
+    // $redirect_url = trim($node->webform['redirect_url']);
+    // $redirect_url = _webform_filter_values($redirect_url, $node, NULL, NULL, FALSE, TRUE);
+    // $output[] = ctools_ajax_command_redirect($redirect_url);
+  }
+  print ajax_render($output);
+  exit;
+}
+
+/**
+ * Closes modal windows.
+ */
+function modal_forms_dismiss($js) {
+  if (!$js) {
+    return ;
+  }
+  ctools_include('modal');
+  ctools_include('ajax');
+
+  $commands = array(ctools_modal_command_dismiss());
+  print ajax_render($commands);
+}
