Render Highchart image in canvas

HTML

<script src="http://code.highcharts.com/4.0.4/highcharts.js"></script>
<script src="http://code.highcharts.com/4.0.4/modules/exporting.js"></script>
<div id='container'></div>
<button id='save_btn'>Save Chart</button>

CSS

#container {
    max-width: 800px;
    height: 400px;
    margin: 1em auto;
}

JavaScript

EXPORT_WIDTH = 1000;

function save_chart(chart) {
    var render_width = EXPORT_WIDTH;
    var render_height = render_width * chart.chartHeight / chart.chartWidth

    // Get the cart's SVG code
    var svg = chart.getSVG({
        exporting: {
            sourceWidth: chart.chartWidth,
            sourceHeight: chart.chartHeight
        }
    });

    // Create a canvas
    var canvas = document.createElement('canvas');
    canvas.height = render_height;
    canvas.width = render_width;
    document.body.appendChild(canvas);

    // Create an image and draw the SVG onto the canvas
    var image = new Image;
    image.onload = function() {
        canvas.getContext('2d').drawImage(this, 0, 0, render_width, render_height);
    };
    image.src = 'data:image/svg+xml;base64,' + window.btoa(svg);
}


$(function() {

    $('#container').highcharts({

        exporting: {
            enabled: false
        },

        title: {
            text: 'Client-Side Download Example'
        },

        subtitle: {
            text: 'Click "Save Chart" to copy chart into canvas'
        },

        chart: {
            type: 'area'
        },

        xAxis: {
            categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
                'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
        },

        series: [{
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
        }]

    });
    
    $('#save_btn').click(function() {
        save_chart($('#container').highcharts());
    });

});