No WinRT C # como faço para salvar uma árvore XAML fora da tela usando RenderTargetBitmap?

O código a seguir lança um System.ArgumentException enigmático do método RenderAsync "Valor não está dentro do intervalo esperado". Se, por outro lado, meu Canvas faz parte de uma árvore XAML visível, ele funciona. É impossível renderizar algum XAML que não seja exibido na tela?

Canvas c = new Canvas();
c.Width = 40;
c.Height = 40;
c.Background = new SolidColorBrush(Color.FromArgb(0xff, 0x80, 0xff, 0x80));

RenderTargetBitmap x = new RenderTargetBitmap();
await x.RenderAsync(c);

Eu quase pensei que essa resposta funcionaria, mas sem sorte, acho que só se aplica ao WPF:Criar elemento WPF fora da tela e renderizar para bitmap

ATUALIZAR:

Até agora, minha melhor ideia é colocar o Canvas que desejo renderizar na página visível no momento, mas colocá-lo abaixo do que normalmente é o UIElement raiz que preenche a tela para que não fique visível para o usuário:

<Grid>
    <Canvas x:Name="HiddenCanvas"/>
    <Grid x:Name="mainElement" Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    </Grid>
</Grid>

Não é bonito, mas parece funcionar. Vamos ver se alguém consegue fazer melhor

questionAnswers(2)

yourAnswerToTheQuestion