draw scale markings appropriate for the capture
function () {
      var self = this;
      var start_x = time_x(self.capture_idx.start);
      var end_x = time_x(self.capture_idx.end);
      var end_y = self.h - margin[2];
      var end_attrs = {
        stroke: "#666",
        "stroke-width": "1"
      };
      var label_attrs = {
        fill: "white",
        "font-size": "16",
        "opacity": ".5"
      };
      paper.path(
        "M" + start_x + "," + margin[0] + " " +
        "L" + start_x + "," + end_y).attr(end_attrs);
      var m;
      if (self.pix_per_sec <= 1000) {
        m = 1000;
      } else if (self.pix_per_sec <= 2000) {
        m = 500;
      } else if (self.pix_per_sec <= 3500) {
        m = 250;
      } else if (self.pix_per_sec <= 5000) {
        m = 100;
      } else {
        m = 50;
      }
      for (var i = self.capture_idx.start; i < self.capture_idx.end; i += m) {
        var i_x = time_x(i);
        paper.path(
          "M" + i_x + "," + margin[0] + " " +
          "L" + i_x + "," + end_y
        ).attr({
          stroke: "#444",
          "stroke-width": "1"
        });
        paper.text(i_x, end_y + 10,
          ((i - self.capture_idx.start) / 1000) + "s").attr(label_attrs);
        paper.text(i_x, margin[0] - 20,
          ((i - self.capture_idx.start) / 1000) + "s").attr(label_attrs);
      }
      paper.path(
        "M" + end_x + "," + margin[0] + " " +
        "L" + end_x + "," + end_y
      ).attr(end_attrs);
    }