Bueno, buscando buscando he encontrado lo siguiente (por si a alguien le hace falta):
Código:
<img src="imagen.jpg" alt="" OnLoad="X=ancho_máximo;Y=alto_máximo;if ( this.width > X && this.height < Y ){this.height = ( X * this.height ) / this.width;this.width= X};if (this.width < X && this.height > Y ){this.width = ( Y * (this.width) ) / this.height;this.height= Y};if ( this.width > X && this.height > Y ){if (this.width/this.height>=1){{this.height = ( X * this.height ) / this.width;this.width= X}}else {this.width = ( Y * (this.width) ) / this.height;this.height= Y}}" border="0" />
Funciona perfectamente y no distorsiona las imágenes: si alguna de las dimensiones es mayor que su máximo, la pone al máximo y modifica la otra.