PhantomJS is easy to compile in Ubuntu, uses QtWebKit to render pages, is controlled by Javascript and can output PNG. Here's a simple script to create a screenshot of a web page, with a tiny bit of DOM manipulation:
var url = 'http://www.guardian.co.uk/'
var output = 'snapshot.png'
switch (phantom.state.length){
case 0:
phantom.state = 'rasterize'
phantom.viewportSize = { width: 1024, height: 768 }
phantom.open(url)
break;
default:
document.querySelectorAll("#guardian-logo img").item(0).setAttribute("src", "http://placekitten.com/344/52")
phantom.sleep(1000)
phantom.render(output)
phantom.exit()
break;
}