This is a regression from #12864. The underscore is now too thin when the document is zoomed in.

URL: https://github.com/mozilla/pdf.js/files/2321540/issue6127.pdf
PDF.js 2.7.526: https://i.imgur.com/T4mIpct.png
PDF.js 2.7.510: https://i.imgur.com/nbwEpGT.png
Adobe Acrobat Reader DC 2020.013.20074: https://i.imgur.com/wDFBf3R.png

The screenshots were taken at 400% zoom.
import {
  getShadingPattern,
  PathType,
  TilingPattern,
} from "./pattern_helper.js";
import { PixelsPerInch } from "./display_utils.js";
const MIN_FONT_SIZE = 16;
const MAX_FONT_SIZE = 100;
const MAX_GROUP_SIZE = 4096;
const EXECUTION_TIME = 15; 
const EXECUTION_STEPS = 10;
const COMPILE_TYPE3_GLYPHS = true;
const MAX_SIZE_TO_COMPILE = 1000;
const FULL_CHUNK_HEIGHT = 16;
const LINEWIDTH_SCALE_FACTOR = 1.000001;
/**
 * Overrides certain methods on a 2d ctx so that when they are called they
 * will also call the same method on the destCtx. The methods that are
 * overridden are all the transformation state modifiers, path creation, and
 * save/restore. We only forward these specific methods because they are the
 * only state modifiers that we cannot copy over when we switch contexts.
 *
 * To remove mirroring call `ctx._removeMirroring()`.
 *
 * @param {Object} ctx - The 2d canvas context that will duplicate its calls on
 *   the destCtx.
 * @param {Object} destCtx - The 2d canvas context that will receive the
 *   forwarded calls.
 */
function mirrorContextOperations(ctx, destCtx) {