Since you are using the functional dropout, you should pass the self.training attribute to it.
Otherwise it will be always enabled (during training and validation):
x = F.dropout(x, p=0.5, self.training)

Also, have you tried to use a CNN, which might work better on image data?
Have you tried playing with the hyperparameters, e.g. reducing the learning rate etc.?
Did you use the same model and training parameters for the other dataset?