Используя HTMLAgilityPack для записи нового узла изображения, он, кажется, удаляет закрывающий тег изображения, например, должен быть, но когда вы проверяете внешний html, есть.
string strIMG = "<img src='" + imgPath + "' height='" + pubImg.Height + "px' width='" + pubImg.Width + "px' />";
HtmlNode newNode = HtmlNode.Create(strIMG);
Это разрывает xhtml.
Сообщая, что он выводит XML, поскольку Micky предлагает работы, но если у вас есть другие причины, не требующие XML, попробуйте это:
doc.OptionWriteEmptyNodes = true;