how to make $page['content'] stop replacing HTML
Try going to admin/config/content/formats/html where 'html' is your WYSIWYG profile and check your filter processing order.

Mine:

Insert view filter
Convert Media tags to markup
CKEditor Link Filter
Convert URLs into links
Correct faulty and chopped off HTML
Limit allowed HTML tags

If I put 'Limit allowed HTML tags' at the top I get similar issues to what you are describing.

EDIT: The order did not actually cause the issue for me. I had just forgotten to add &lt;h3&gt; to the allowed list.