diff --git a/tracker/issueattachmenttext.py b/tracker/issueattachmenttext.py
index d3daaf9..40db170 100644
--- a/tracker/issueattachmenttext.py
+++ b/tracker/issueattachmenttext.py
@@ -14,15 +14,13 @@
 
 import logging
 
-import webapp2
-
-from google.appengine.api import app_identity
-
-from third_party import cloudstorage
 import ezt
+from google.appengine.api import app_identity
+from google.cloud import storage
 
 from features import prettify
 from framework import exceptions
+from framework import flaskservlet
 from framework import filecontent
 from framework import permissions
 from framework import servlet
@@ -36,7 +34,7 @@
   """AttachmentText displays textual attachments much like source browsing."""
 
   _PAGE_TEMPLATE = 'tracker/issue-attachment-text.ezt'
-  _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_ISSUES
+  _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_ISSUES
 
   def GatherPageData(self, mr):
     """Parse the attachment ID from the request and serve its content.
@@ -52,19 +50,27 @@
         attachment, issue = tracker_helpers.GetAttachmentIfAllowed(
             mr, self.services)
       except exceptions.NoSuchIssueException:
-        webapp2.abort(404, 'issue not found')
+        self.abort(404, 'issue not found')
       except exceptions.NoSuchAttachmentException:
-        webapp2.abort(404, 'attachment not found')
+        self.abort(404, 'attachment not found')
       except exceptions.NoSuchCommentException:
-        webapp2.abort(404, 'comment not found')
+        self.abort(404, 'comment not found')
 
-    content = []
+    content = b''
     if attachment.gcs_object_id:
       bucket_name = app_identity.get_default_gcs_bucket_name()
       full_path = '/' + bucket_name + attachment.gcs_object_id
       logging.info("reading gcs: %s" % full_path)
-      with cloudstorage.open(full_path, 'r') as f:
-        content = f.read()
+
+      # Strip leading slash from object ID for backwards compatibility.
+      blob_name = attachment.gcs_object_id
+      if blob_name.startswith('/'):
+        blob_name = blob_name[1:]
+
+      client = storage.Client()
+      bucket = client.get_bucket(bucket_name)
+      blob = bucket.get_blob(blob_name)
+      content = blob.download_as_bytes()
 
     filesize = len(content)
 
@@ -101,3 +107,6 @@
           len(lines), attachment.filename))
 
     return page_data
+
+  # def GetAttachmentText(self, **kwargs):
+  #   return self.handler(**kwargs)
