One commercial solution you could try is the LEADTOOLS Image Viewer and Annotations Library.
The Image Viewer control provided by the SDK supports pinch to zoom as well as the ability to add Annotations which would allow you to draw on images.
You can try out an online interactive demo here:
LEADTOOLS JS Annotations Online Interactive Demo
Here is some sample code on how to get started with the LEADTOOLS library:
HTML Code
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>LEADTOOLS Demo</title>
<script type="text/javascript" src="lib/Leadtools.js"></script>
<script type="text/javascript" src="lib/Leadtools.Controls.js"></script>
<script type="text/javascript" src="lib/app.js"></script>
<script type="text/javascript" src="lib/Leadtools.Annotations.Core.js"></script>
<script type="text/javascript" src="lib/Leadtools.Annotations.Rendering.JavaScript.js"></script>
<script type="text/javascript" src="lib/Leadtools.Annotations.Designers.js"></script>
<script type="text/javascript" src="lib/Leadtools.Annotations.Automation.js"></script>
<script type="text/javascript" src="lib/Leadtools.Annotations.JavaScript.js"></script>
</head>
<body>
<div id="imageViewerDiv" style="width:550px; height:200px; background-color: darkgray"></div>
</body>
Javascript Code
window.onload = function () {
var imageViewerDiv = document.getElementById("imageViewerDiv");
var createOptions = new lt.Controls.ImageViewerCreateOptions(imageViewerDiv);
var imageViewer = new lt.Controls.ImageViewer(createOptions);
imageViewer.imageUrl = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png";
var renderingEngine = new lt.Annotations.Rendering.AnnHtml5RenderingEngine();
var manager = new lt.Annotations.Automation.AnnAutomationManager.create(renderingEngine);
manager.createDefaultObjects();
manager.editObjectAfterDraw = false;
var automationControl = new lt.Annotations.JavaScript.ImageViewerAutomationControl();
automationControl.imageViewer = imageViewer;
var automationInteractiveMode = new lt.Annotations.JavaScript.AutomationInteractiveMode();
automationInteractiveMode.automationControl = automationControl;
imageViewer.defaultInteractiveMode = automationInteractiveMode;
var automation = new lt.Annotations.Automation.AnnAutomation(manager, automationControl);
imageViewer.itemChanged.add(function (sender, e) {
var container = automation.container;
container.size = container.mapper.sizeToContainerCoordinates(imageViewer.imageSize);
manager.currentObjectId = lt.Annotations.Core.AnnObject.freehandObjectId;
});
automation.active = true;
}
Output of above code:

Just as a disclaimer, I am an employee of this library.