diff --git a/workbench_moderation.module b/workbench_moderation.module
index fceff91..c173d09 100644
--- a/workbench_moderation.module
+++ b/workbench_moderation.module
@@ -51,6 +51,12 @@ function workbench_moderation_menu() {
     'type' => MENU_CALLBACK,
   );
 
+  $items['node/%node/moderation/view'] = array(
+    'title' => 'Revisions',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -1,
+  );
+
   // View the current revision of a node. Redirects to node/%node if the current revision is
   // published, and to node/%node/draft if the current revision is a draft.
   $items["node/%node/current-revision"] = array(
@@ -104,9 +110,62 @@ function workbench_moderation_menu() {
     'weight' => 10,
   );
 
+  // If the diff module is present, replicate its pages under the moderation tab.
+  if (module_exists('diff')) {
+    $diff_menu_items  = diff_menu();
+
+    $items['node/%node/moderation/diff'] = array(
+      'type' => MENU_LOCAL_TASK,
+      'file path' => drupal_get_path('module', 'diff'),
+      'title' => 'Diff',
+      'page arguments' => array(1),
+    );
+
+    $items['node/%node/moderation/diff'] += $diff_menu_items['node/%node/revisions/list'];
+
+
+    $items['node/%node/moderation/diff/list'] = array(
+      'title' => 'Diff',
+      'type' => MENU_DEFAULT_LOCAL_TASK,
+      'weight' => -1,
+    );
+
+    $items['node/%node/moderation/diff/view'] = array(
+      'page arguments' => array(1, 5, 6),
+      'tab_parent' => 'node/%/moderation/diff/list',
+      'file path' => drupal_get_path('module', 'diff'),
+    );
+
+    $items['node/%node/moderation/diff/view'] += $diff_menu_items['node/%node/revisions/view'];
+  }
+
   return $items;
 }
 
+
+/**
+ * Implements hook_form_FORM_ID_alter.
+ */
+function workbench_moderation_form_diff_node_revisions_alter(&$form, &$form_state, $form_id) {
+
+  // If this form is appearing under moderation then add a submit function
+  // that will keep the user in the moderation tab.
+  if (arg(2) == 'moderation') {
+    $form['#submit'][] = 'workbench_moderation_diff_node_revisions_submit';
+  }
+}
+
+/**
+ * Redirects the the diff_node_revisions form when the user is under the moderation tab.
+ */
+function workbench_moderation_diff_node_revisions_submit($form, &$form_state) {
+
+  // the ids are ordered so the old revision is always on the left
+  $old_vid = min($form_state['values']['old'], $form_state['values']['new']);
+  $new_vid = max($form_state['values']['old'], $form_state['values']['new']);
+  $form_state['redirect'] =  'node/'. $form_state['values']['nid'] .'/moderation/diff/view/'. $old_vid .'/'. $new_vid;
+}
+
 /**
  * Implements hook_menu_alter().
  */
@@ -160,7 +219,13 @@ function workbench_moderation_node_revisions_redirect($node) {
   }
   // Return the normal node revisions page for unmoderated types.
   else {
-    return node_revision_overview($node);
+
+    if (module_exists('diff')) {
+      return diff_diffs_overview($node);
+    }
+    else {
+      return node_revision_overview($node);
+    }
   }
 }
 
