Stai facendo confusione con gli indici. E anche l'operatore << ha gli indici in odine inverso.
L'indice esterno è m ( da cui ricavi poi lo spazio per i vettori di dimensioni n)

codice:
Canvas::Canvas(int i, int j){
	m=i;
	n=j;
	col=new colore*[m];
	for(int i=0; i<m; i++)
		col[i]=new colore[n];
	for(int i=0; i<m; i++)
	{
		for(int j=0; j<n; j++)
			col[i][j]=bianco;
	}
	cout << "Costruttore\n";
}			

Canvas::~Canvas(){
	for(int i=0; i<n; i++)
		delete col[i];

	delete[] col;
	cout << "Distruttore\n";
}