diff --git a/extensions/firefox/chrome/content.js b/extensions/firefox/chrome/content.js
index 982aa7d8a..e52938ad9 100644
--- a/extensions/firefox/chrome/content.js
+++ b/extensions/firefox/chrome/content.js
@@ -20,79 +20,84 @@
 
 'use strict';
 
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cm = Components.manager;
-const Cu = Components.utils;
-const Cr = Components.results;
+(function contentScriptClosure() {
+  // we need to use closure here -- we are running in the global context
 
-Cu.import('resource://gre/modules/XPCOMUtils.jsm');
-Cu.import('resource://gre/modules/Services.jsm');
+  const Cc = Components.classes;
+  const Ci = Components.interfaces;
+  const Cm = Components.manager;
+  const Cu = Components.utils;
+  const Cr = Components.results;
 
-var isRemote = Services.appinfo.processType ===
-               Services.appinfo.PROCESS_TYPE_CONTENT;
+  Cu.import('resource://gre/modules/XPCOMUtils.jsm');
+  Cu.import('resource://gre/modules/Services.jsm');
 
-// Factory that registers/unregisters a constructor as a component.
-function Factory() {}
-
-Factory.prototype = {
-  QueryInterface: XPCOMUtils.generateQI([Ci.nsIFactory]),
-  _targetConstructor: null,
-
-  register: function register(targetConstructor) {
-    this._targetConstructor = targetConstructor;
-    var proto = targetConstructor.prototype;
-    var registrar = Cm.QueryInterface(Ci.nsIComponentRegistrar);
-    registrar.registerFactory(proto.classID, proto.classDescription,
-      proto.contractID, this);
-  },
-
-  unregister: function unregister() {
-    var proto = this._targetConstructor.prototype;
-    var registrar = Cm.QueryInterface(Ci.nsIComponentRegistrar);
-    registrar.unregisterFactory(proto.classID, this);
-    this._targetConstructor = null;
-  },
-
-  // nsIFactory
-  createInstance: function createInstance(aOuter, iid) {
-    if (aOuter !== null) {
-      throw Cr.NS_ERROR_NO_AGGREGATION;
-    }
-    return (new (this._targetConstructor)()).QueryInterface(iid);
-  },
+  var isRemote = Services.appinfo.processType ===
+    Services.appinfo.PROCESS_TYPE_CONTENT;
 
-  // nsIFactory
-  lockFactory: function lockFactory(lock) {
-    // No longer used as of gecko 1.7.
-    throw Cr.NS_ERROR_NOT_IMPLEMENTED;
+// Factory that registers/unregisters a constructor as a component.
+  function Factory() {
   }
-};
 
-var pdfStreamConverterFactory = new Factory();
+  Factory.prototype = {
+    QueryInterface: XPCOMUtils.generateQI([Ci.nsIFactory]),
+    _targetConstructor: null,
+
+    register: function register(targetConstructor) {
+      this._targetConstructor = targetConstructor;
+      var proto = targetConstructor.prototype;
+      var registrar = Cm.QueryInterface(Ci.nsIComponentRegistrar);
+      registrar.registerFactory(proto.classID, proto.classDescription,
+        proto.contractID, this);
+    },
+
+    unregister: function unregister() {
+      var proto = this._targetConstructor.prototype;
+      var registrar = Cm.QueryInterface(Ci.nsIComponentRegistrar);
+      registrar.unregisterFactory(proto.classID, this);
+      this._targetConstructor = null;
+    },
+
+    // nsIFactory
+    createInstance: function createInstance(aOuter, iid) {
+      if (aOuter !== null) {
+        throw Cr.NS_ERROR_NO_AGGREGATION;
+      }
+      return (new (this._targetConstructor)()).QueryInterface(iid);
+    },
+
+    // nsIFactory
+    lockFactory: function lockFactory(lock) {
+      // No longer used as of gecko 1.7.
+      throw Cr.NS_ERROR_NOT_IMPLEMENTED;
+    }
+  };
+
+  var pdfStreamConverterFactory = new Factory();
 
-function startup() {
-  Cu.import('resource://pdf.js/PdfjsContentUtils.jsm');
-  PdfjsContentUtils.init();
+  function startup() {
+    Cu.import('resource://pdf.js/PdfjsContentUtils.jsm');
+    PdfjsContentUtils.init();
 
-  Cu.import('resource://pdf.js/PdfStreamConverter.jsm');
-  pdfStreamConverterFactory.register(PdfStreamConverter);
-}
+    Cu.import('resource://pdf.js/PdfStreamConverter.jsm');
+    pdfStreamConverterFactory.register(PdfStreamConverter);
+  }
 
-function shutdown() {
-  // Remove the contract/component.
-  pdfStreamConverterFactory.unregister();
-  // Unload the converter
-  Cu.unload('resource://pdf.js/PdfStreamConverter.jsm');
+  function shutdown() {
+    // Remove the contract/component.
+    pdfStreamConverterFactory.unregister();
+    // Unload the converter
+    Cu.unload('resource://pdf.js/PdfStreamConverter.jsm');
 
-  PdfjsContentUtils.uninit();
-  Cu.unload('resource://pdf.js/PdfjsContentUtils.jsm');
-}
+    PdfjsContentUtils.uninit();
+    Cu.unload('resource://pdf.js/PdfjsContentUtils.jsm');
+  }
 
-if (isRemote) {
-  startup();
+  if (isRemote) {
+    startup();
 
-  addMessageListener('PDFJS:Child:shutdown', function (e) {
-    shutdown();
-  });
-}
+    addMessageListener('PDFJS:Child:shutdown', function (e) {
+      shutdown();
+    });
+  }
+})();