If I use loader config to load html into a panel the html gets messed up, meaning vertical spacing of <p> elements is much less.

If I load the html with panel.body.update() the vertical spacing is fine. How can I avoid this problem? For reasons I won't get into, I must load the html into the panel using loader.

Code:
me.companyAgreementPopup.down('#companyAgreementText').body.update("<iframe width='100%' height='100%' frameborder='0' src='" + me.agreementUrl + "'></iframe>");
The screenshot below shows the issue (sensitive data blocked out). The upper image is fine, the lower image has vertical spacing issue.

html_messed_up.png