anchor.diff:  
     // Commit a recording canvas to a bitmap, and compare with the expected
     Future<void> _checkScreenshot(RecordingCanvas rc, String fileName,
  -      {Rect region = const Rect.fromLTWH(0, 0, 500, 500)}) async {
  +      {Rect region = const Rect.fromLTWH(0, 0, 500, 500),
  +       double maxDiffRatePercent = 0.0}) async {
       final EngineCanvas engineCanvas = BitmapCanvas(screenRect);
   
       rc.apply(engineCanvas);
  
positive.code:     rc.drawImage(createTestImage(), Offset(135.0, 130.0),
          Paint()..blendMode = BlendMode.multiply);
      rc.restore();
      await _checkScreenshot(rc, 'canvas_blend_image_multiply');
    });
  }
  
  
negative.code:           ..style = PaintingStyle.fill
            ..color = const Color.fromARGB(128, 255, 0, 0));
      rc.restore();
      await _checkScreenshot(rc, 'canvas_blend_circle_diff_color',
          maxDiffRatePercent: operatingSystem == OperatingSystem.macOs ? 2.95 : 0);
    });
  
    test('Blend circle and text with multiply', () async {
  