+    def add_box(self, img):
+        if self.box_position == 'none':
+            return img
+
+        metr = Metric(self, self.scale)
+
+        # Write author name.
+        box = TextBox(metr.title_box_width, metr.height, padding_y=metr.box_padding_y)
+        author_font = ImageFont.truetype(
+            self.author_font_ttf, metr.author_font_size)
+        for pa in self.pretty_authors():
+            box.text(pa,
+                 font=author_font,
+                 line_height=metr.author_lineskip,
+                 color=self.author_color,
+                 shadow_color=self.author_shadow)
+
+        box.skip(metr.box_above_line)
+        box.draw.line((metr.box_line_left, box.height, metr.box_line_right, box.height),
+                      fill=self.author_color, width=metr.box_line_width)
+        box.skip(metr.box_below_line)
+
+        # Write title.
+        title_font = ImageFont.truetype(
+            self.title_font_ttf, metr.title_font_size)
+        box.text(self.pretty_title(),
+                 line_height=metr.title_lineskip,
+                 font=title_font,
+                 color=self.title_color,
+                 shadow_color=self.title_shadow)
+
+        box_img = box.image()
+
+        # Find box position.
+        if self.box_position == 'top':
+            box_top = metr.box_top_margin
+        elif self.box_position == 'bottom':
+            box_top = metr.height - metr.box_bottom_margin - box_img.size[1]
+        else:   # Middle.
+            box_top = (metr.height - box_img.size[1]) // 2
+
+        box_left = metr.bar_width + (metr.width - metr.bar_width - box_img.size[0]) // 2
+
+        # Draw the white box.
+        ImageDraw.Draw(img).rectangle(
+            (box_left, box_top, box_left + box_img.size[0], box_top + box_img.size[1]), fill='#fff')
+        # Paste the contents into the white box.
+        img.paste(box_img, (box_left, box_top), box_img)
+        return img
+
+    def add_cut_lines(self, img):
+        line_ratio = 0.5
+        if self.bleed == 0:
+            return img
+        metr = Metric(self, self.scale)
+        draw = ImageDraw.Draw(img)
+        for corner_x, corner_y in ((0, 0), (metr.width, 0), (0, metr.height), (metr.width, metr.height)):
+            dir_x = 1 if corner_x == 0 else -1
+            dir_y = 1 if corner_y == 0 else -1
+            for offset in (-1, 0, 1):
+                draw.line((corner_x, corner_y + dir_y * metr.bleed + offset,
+                           corner_x + dir_x * metr.bleed * line_ratio, corner_y + dir_y * metr.bleed + offset),
+                          fill='black' if offset == 0 else 'white', width=1)
+                draw.line((corner_x + dir_x * metr.bleed + offset, corner_y,
+                           corner_x + dir_x * metr.bleed + offset, corner_y + dir_y * metr.bleed * line_ratio),
+                          fill='black' if offset == 0 else 'white', width=1)
+        return img