private ArrayList<Integer> findZoomOptions() {
    ArrayList<Integer> result = new ArrayList<>();
    result.add(100);
    final int screenDPI = app.getScreenDPI();
    zoom100 = 1.0 * screenDPI / pageInfo.dpi;
    int subsample = toSubsample(zoom100);
    if (toZoom(subsample) / zoom100 > zoom100 / toZoom(subsample + 1)) subsample++;
    zoom100 = toZoom(subsample);

    if (zoom == 0) zoom = zoom100;

    double z = zoom100;
    for (int i = subsample + 1; i <= MAX_SUBSAMPLE; i++) {
      double z2 = toZoom(i);
      if (z / z2 > 1.2) {
        z = z2;
        result.add((int) (z / zoom100 * 100 + 0.5));
      }
    }

    z = zoom100;
    for (int i = subsample - 1; i >= 1; i--) {
      double z2 = toZoom(i);
      if (z2 / z > 1.2) {
        z = z2;
        result.add(0, (int) (z / zoom100 * 100 + 0.5));
      }
    }
    return result;
  }