Имеет ли холст явную высоту / ширину? Может иметь автоматический размер и иметь двойную высоту / ширину. Нет.
Попробуйте связать дочернюю высоту / ширину с ActualHeight и ActualWidth холста следующим образом:
Height="{Binding ElementName=MainCanvas, Path=ActualHeight}"
Width="{Binding ElementName=MainCanvas, Path=ActualWidth}"
Панели Canvas никогда не сообщают дочерним элементам размер относительно их размера, даже если для дочерних элементов установлено значение HorizontalAlignment.Stretch (или вертикальное). Таким образом, связывание является хорошим решением здесь.