Force SSL 100%?

If wordpress API gives you http instead of https it means that somewhere your data still contains HTTP, therefor you might need to take a more careful look at what urls are in your DB, for this specific functions you should look at your menus.

But probably the simplest way to solve this issue to to buffer page generation by using ob_start on init event and outputting the buffer on shutdosn after replacing all the http://mydomain to https://mydomain.

add_action('init','wpse199859_stat_buffering',0);

function wpse199859_stat_buffering() {
    ob_start();
}

add_action('shutdown','wpse199859_stop_buffering',0);

function wpse199859_stop_buffering() {
    $o = ob_get_contents();
    echo str_replace('http://mydomain','https://mydomain',$o);
}