Capturing screenshot with transparent background in 4.3, 2d project

I’m trying to render the scene to a png with a transparent background, however, I can’t even get the screenshots to show right. I have it added to the camera but all I get is a grey screenshot

I get 2 errors:
ReadPixels was called to read pixels from system frame buffer, while not inside drawing frame.
UnityEngine.Texture2D:ReadPixels(Rect, Int32, Int32)
HiResScreenShots:LateUpdate() (at Assets/HiResScreenShots.cs:29)

and: Trying to read pixel out of bounds

I found the code from this question

using UnityEngine;
using System.Collections;

public class HiResScreenShots : MonoBehaviour {
	public int resWidth = 2550; 
	public int resHeight = 3300;
	private bool takeHiResShot = false;
	public static string ScreenShotName(int width, int height) {
		return string.Format("{0}/Screenshots/screen_{1}x{2}_{3}.png", 
		                     width, height, 
	public void TakeHiResShot() {
		takeHiResShot = true;
	void LateUpdate() {
		takeHiResShot |= Input.GetKeyDown("k");
		if (takeHiResShot) {
			RenderTexture rt = new RenderTexture(resWidth, resHeight, 24);
			camera.targetTexture = rt;
			Texture2D screenShot = new Texture2D(resWidth, resHeight, TextureFormat.RGB24, false);
			camera.Render(); = rt;
			screenShot.ReadPixels(new Rect(0, 0, resWidth, resHeight), 0, 0);
			camera.targetTexture = null; = null; // JC: added to avoid errors
			byte[] bytes = screenShot.EncodeToPNG();
			string filename = ScreenShotName(resWidth, resHeight);
			System.IO.File.WriteAllBytes(filename, bytes);
			Debug.Log(string.Format("Took screenshot to: {0}", filename));
			takeHiResShot = false;

I’m unsure what I’m doing wrong, any help would be appreciated

If you want that result:
Imgur: The magic of the Internet (it has alpha channel)
you may do this with Renderator