Transparent shader: final alpha value wrong

I’m currently working on a cloud system which shows near clouds as meshes and far clouds rendered into a skybox. The problem is, that the clouds being rendered to the RenderTexture have a different alpha value.

This is how a cloud looks like when being rendered to the screen:

I would expect the alpha channel to look something like the rendered cloud but it’s not:

This is the shader I’m using:

Shader "Custom/CloudShader"
		_MainTex("Base (A)", 2D) = "white" {}
		_Color ("Color", Color) = (1.0, 1.0, 1.0, 1.0)
		Tags { "RenderType" = "Transparent" "Queue" = "Transparent" }
		Blend SrcAlpha OneMinusSrcAlpha
		Cull Off
		ZWrite Off
		LOD 200
		#pragma surface surf NoLighting
		fixed4 LightingNoLighting(SurfaceOutput s, fixed3 lightDir, fixed atten)
			fixed4 c;
			c.rgb = s.Albedo; 
			c.a = s.Alpha;
			return c;
		uniform sampler _MainTex;
		uniform fixed4 _Color;
		struct Input
			float2 uv_MainTex;
			float3 viewDir;
			float4 color : COLOR;
			float3 worldPos;
		void surf (Input IN, inout SurfaceOutput o)
			const float FADEOUT = 20;
			float dist = distance(_WorldSpaceCameraPos, IN.worldPos);
			float factor = saturate(dist / FADEOUT);
			o.Albedo = _Color.rgb * IN.color;
			o.Alpha = _Color.a * tex2D (_MainTex, IN.uv_MainTex).a;
			o.Alpha *= factor * saturate(abs(dot(o.Normal, normalize(IN.viewDir))) - 0.3);			
	FallBack "Diffuse"

It seems the alpha value rendered to the RenderTexture is different from the value on the screen. What would I have to do to get the same results?

(Using the grayscale for the alpha channel doesn’t give me a correct result.)

I found the solution. Separate additive alpha blending does the trick:

Blend SrcAlpha OneMinusSrcAlpha, One One

Provided that you’re trying to get the top image as your final result, this could work.

c.a = c.r + c.g + c.b;

Best Regards