diff --git a/src/markup/engine/remarkup/__tests__/PhutilRemarkupEngineTestCase.php b/src/markup/engine/remarkup/__tests__/PhutilRemarkupEngineTestCase.php
index 8a24d89..bd962d4 100644
--- a/src/markup/engine/remarkup/__tests__/PhutilRemarkupEngineTestCase.php
+++ b/src/markup/engine/remarkup/__tests__/PhutilRemarkupEngineTestCase.php
@@ -1,87 +1,87 @@
 <?php
 
 /*
  * Copyright 2012 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 /**
  * Test cases for @{class:PhutilRemarkupEngine}.
  *
  * @group testcase
  */
 final class PhutilRemarkupEngineTestCase extends ArcanistPhutilTestCase {
 
   public function testEngine() {
     $root = dirname(__FILE__).'/data/';
     foreach (Filesystem::listDirectory($root, $hidden = false) as $file) {
       $this->markupText($root.$file);
     }
   }
 
   private function markupText($markup_file) {
     $contents = Filesystem::readFile($markup_file);
     $file = basename($markup_file);
 
     $parts = explode("\n~~~~~~~~~~\n", $contents);
     $this->assertEqual(2, count($parts));
 
     list($input_remarkup, $expected_output) = $parts;
 
     $engine = $this->buildNewTestEngine();
 
     $actual_output = $engine->markupText($input_remarkup);
 
     $this->assertEqual(
       $expected_output,
       $actual_output,
       "Failed to markup file '{$file}'.");
   }
 
   private function buildNewTestEngine() {
     $engine = new PhutilRemarkupEngine();
 
     $engine->setConfig(
       'uri.allowed-protocols',
       array(
         'http' => true,
       ));
 
     $rules = array();
     $rules[] = new PhutilRemarkupRuleEscapeRemarkup();
+    $rules[] = new PhutilRemarkupRuleMonospace();
     $rules[] = new PhutilRemarkupRuleHyperlink();
     $rules[] = new PhutilRemarkupRuleEscapeHTML();
-    $rules[] = new PhutilRemarkupRuleMonospace();
     $rules[] = new PhutilRemarkupRuleBold();
     $rules[] = new PhutilRemarkupRuleItalic();
 
     $blocks = array();
     $blocks[] = new PhutilRemarkupEngineRemarkupHeaderBlockRule();
     $blocks[] = new PhutilRemarkupEngineRemarkupListBlockRule();
     $blocks[] = new PhutilRemarkupEngineRemarkupCodeBlockRule();
     $blocks[] = new PhutilRemarkupEngineRemarkupNoteBlockRule();
     $blocks[] = new PhutilRemarkupEngineRemarkupDefaultBlockRule();
 
     foreach ($blocks as $block) {
       if (!($block instanceof PhutilRemarkupEngineRemarkupCodeBlockRule)) {
         $block->setMarkupRules($rules);
       }
     }
 
     $engine->setBlockRules($blocks);
 
     return $engine;
   }
 
 }
diff --git a/src/markup/engine/remarkup/markuprule/monospace/PhutilRemarkupRuleMonospace.php b/src/markup/engine/remarkup/markuprule/monospace/PhutilRemarkupRuleMonospace.php
index 261a3a2..344e395 100644
--- a/src/markup/engine/remarkup/markuprule/monospace/PhutilRemarkupRuleMonospace.php
+++ b/src/markup/engine/remarkup/markuprule/monospace/PhutilRemarkupRuleMonospace.php
@@ -1,40 +1,40 @@
 <?php
 
 /*
  * Copyright 2012 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 /**
  * @group markup
  */
 final class PhutilRemarkupRuleMonospace
   extends PhutilRemarkupRule {
 
   public function apply($text) {
     return preg_replace_callback(
       '@##([\s\S]+?)##|\B`(.+?)`\B@',
       array($this, 'markupMonospacedText'),
       $text);
   }
 
   private function markupMonospacedText($matches) {
     $match = isset($matches[2]) ? $matches[2] : $matches[1];
 
-    $result = '<tt>'.$match.'</tt>';
+    $result = '<tt>'.phutil_escape_html($match).'</tt>';
 
     return $this->getEngine()->storeText($result);
   }
 
 }
diff --git a/src/markup/engine/remarkup/markuprule/monospace/__init__.php b/src/markup/engine/remarkup/markuprule/monospace/__init__.php
index 2411f43..25850b0 100644
--- a/src/markup/engine/remarkup/markuprule/monospace/__init__.php
+++ b/src/markup/engine/remarkup/markuprule/monospace/__init__.php
@@ -1,12 +1,13 @@
 <?php
 /**
  * This file is automatically generated. Lint this module to rebuild it.
  * @generated
  */
 
 
 
+phutil_require_module('phutil', 'markup');
 phutil_require_module('phutil', 'markup/engine/remarkup/markuprule/base');
 
 
 phutil_require_source('PhutilRemarkupRuleMonospace.php');