Dois objetos .NET iguais não dizem que são

Eu tenho o seguinte código:

object val1 = 1;
object val2 = 1;

bool result1 = (val1 == val2);//Equals false
bool result2 = val1.Equals(val2); //Equals true

O que há com isso? É a única maneira de corrigir isso com o método .Equals ()?