Sachverhalt: Sachverhalt: A. Mit Vertrag vom 10. Juli 1995 verpflichtete sich die Z._ Transport AG, später X._ AG, Münchenstein, für die Y._ AG, Zürich, zehn ihr gehörende Computer-Komponenten von Genf nach Embrach zu transportieren und dort in einem Lagerhaus aufzubewahren. Der Transport wurde am 2. August 1995 durchgeführt. Am 6. März 1996 besichtigte ein Vertreter der Y._ AG die Komponenten im Lagerhaus und stellte fest, dass einige davon beschädigt waren. Mit Urteil vom 19. April 2000 verpflichtete das Bezirksgericht Zürich die Y._ AG, der X._ AG auf Grund ausstehender Lagerkosten Fr. 6'065.30 nebst Zins zu 6 % seit 28. September 1966 sowie Kosten von Fr. 3'261.-- zu bezahlen. Mit Urteil vom 19. April 2000 verpflichtete das Bezirksgericht Zürich die Y._ AG, der X._ AG auf Grund ausstehender Lagerkosten Fr. 6'065.30 nebst Zins zu 6 % seit 28. September 1966 sowie Kosten von Fr. 3'261.-- zu bezahlen. B. Am 8. Januar 2001 klagte die Y._ AG (nachstehend: Klägerin) beim Bezirksgericht Arlesheim gegen die X._ AG (nachstehend: Beklagte) auf Zahlung von Fr. 50'166.60 nebst 5 % Zins seit 2. August 1995. Zur Begründung führte die Klägerin an, die Beklagte habe die Comupter-Komponenten beim Transport beschädigt und dadurch in Verletzung des Fracht- und Lagervertrages einen Schaden verursacht. Dieser setze sich aus dem Kaufpreis der Computer-Komponenten von Fr. 40'000.--, den Demontagekosten der IBM von Fr. 9'585.--, dem Preis des Flugtickets Zürich-Genf von Fr. 447.-- und den Kosten für die Hilfe beim Aufladen von Fr. 484.60 zusammen. Die Beklagte schloss auf Abweisung der Klage und verlangte widerklageweise, die Klägerin auf Grund ausstehender Lagergebühren für die Zeit vom September 1996 bis Juni 2001 zur Zahlung von Fr. 18'722.40 nebst Zins zu verurteilen. Eventualiter stellte die Beklagte die ihr vom Bezirksgerichts Zürich am 19. April 2000 zugesprochene Forderung gegenüber der Klägerin zuzüglich Zins zur Verrechnung. Das Bezirksgericht ging davon aus, die Beklagte sei bezüglich der Schäden an den Computer-Komponenten als Lagerhalterin haftbar und kam gestützt auf zwei Gutachten zum Ergebnis, der Schaden sei im Umfang von Fr. 3'600.-- nachgewiesen. Weiter verneinte das Bezirksgericht eine Forderung des Beklagten aus Lagerhaltung und seine Möglichkeit die ihr vom Bezirksgericht Zürich zugesprochene Forderung zur Verrechnung zu bringen. Demnach hiess es mit Urteil vom 29. Januar 2003 die Klage im Umfang von Fr. 3'600.-- nebst Zins zu 5 % seit 2. August 1995 gut und wies die Widerklage ab. Gegen dieses Urteil appellierten beide Parteien beim Kantonsgericht Basel-Landschaft. Mit Urteil vom 9. Dezember 2003 bestätigte es die Gutheissung der Klage im Umfang von Fr. 3'600.-- nebst Zins zu 5 % seit 2. August 1995. Anders als das Bezirksgericht hiess das Kantonsgericht die Widerklage im Umfang von Fr. 18'722.40 nebst Zins zu 6 % seit 1. Februar 1999 gut und stellte fest, dass die Beklagte diese Forderung und die Forderung, welche ihr vom Bezirksgericht Zürich am 9. Mai 2000 gegenüber der Klägerin zugesprochen wurde, mit Forderungen der Klägerin verrechnen könne. Das Bezirksgericht ging davon aus, die Beklagte sei bezüglich der Schäden an den Computer-Komponenten als Lagerhalterin haftbar und kam gestützt auf zwei Gutachten zum Ergebnis, der Schaden sei im Umfang von Fr. 3'600.-- nachgewiesen. Weiter verneinte das Bezirksgericht eine Forderung des Beklagten aus Lagerhaltung und seine Möglichkeit die ihr vom Bezirksgericht Zürich zugesprochene Forderung zur Verrechnung zu bringen. Demnach hiess es mit Urteil vom 29. Januar 2003 die Klage im Umfang von Fr. 3'600.-- nebst Zins zu 5 % seit 2. August 1995 gut und wies die Widerklage ab. Gegen dieses Urteil appellierten beide Parteien beim Kantonsgericht Basel-Landschaft. Mit Urteil vom 9. Dezember 2003 bestätigte es die Gutheissung der Klage im Umfang von Fr. 3'600.-- nebst Zins zu 5 % seit 2. August 1995. Anders als das Bezirksgericht hiess das Kantonsgericht die Widerklage im Umfang von Fr. 18'722.40 nebst Zins zu 6 % seit 1. Februar 1999 gut und stellte fest, dass die Beklagte diese Forderung und die Forderung, welche ihr vom Bezirksgericht Zürich am 9. Mai 2000 gegenüber der Klägerin zugesprochen wurde, mit Forderungen der Klägerin verrechnen könne. C. Die Klägerin erhebt eidgenössiche Berufung mit den Anträgen, das Urteil des Kantonsgerichts sei teilweise aufzuheben, die Klage vollumfänglich gutzuheissen und die Widerklage abzuweisen. Eventualiter sei das Verfahren zur Durchführung eines ergänzenden Beweisverfahrens an die Vorinstanz zurückzuweisen. Die Beklagte schliesst auf Abweisung der Berufung.