Texture2D saves as PNG correctly but doesn't display properly in RawImage

I have a small bit of code i uses to perform a screen capture of my main camera.
Here’s most of the code i have in my ScreenshotManager on my main camera:

private Camera m_camera;
private bool m_takeScreenshotOnNextFrame = false;

private RawImage m_image;

private void OnPostRender()
        if (m_takeScreenshotOnNextFrame)
            m_takeScreenshotOnNextFrame = false;
            RenderTexture renderTexture = m_camera.targetTexture;

            Texture2D renderResult = new Texture2D(renderTexture.width, renderTexture.height, TextureFormat.ARGB32, false);
            Rect rect = new Rect(0, 0, renderTexture.width, renderTexture.height);
            renderResult.ReadPixels(rect, 0, 0);

            byte[] byteArray = renderResult.EncodeToPNG();
            System.IO.File.WriteAllBytes(Application.dataPath + "/TestScreen.png", byteArray);
            Debug.Log("Saved Screen.");

            m_image.texture = renderResult;

            m_camera.targetTexture = null;
            m_camera.cullingMask = m_camera.cullingMask | (1 << LayerMask.NameToLayer("UI"));
            m_camera.fieldOfView = 60.0f;

    private void TakeScreenshot(int width, int height)
        m_camera.targetTexture = RenderTexture.GetTemporary(width, height, 16);
        m_takeScreenshotOnNextFrame = true;
        m_camera.cullingMask = m_camera.cullingMask & ~(1 << LayerMask.NameToLayer("UI"));
        m_camera.fieldOfView = 50.0f;

This code works fine for exporting the screenshot as a PNG, but i can’t get it to work for displaying the texture on the UI with m_image. I’ve tried with RawImage and UIImage (with Sprite.Create) and both give me the same result: the image gets slightly, uniformly grey when i take the screenshot.

Here’s how my RawImage is set up, if that can help:

Any hint or advice on how i could get this to work is appreciated.

Found the issue.
For anyone who’d stumble upon this problem, you need to call


On your Texture2D before sending it to the RawImage or creating the sprite with Sprite.Create. This will apply all the modification you’ve done to your texture.