The All Share Price Index closed at 4,601.55, up 10.38 points, while the Milanka index of more liquid stocks rose 0.54 percent (28.42 points) to close at 5,290.17.
Turnover was 2.26 billion rupees, according to stock exchange provisional figures.
Uncertainty over the GSP Plus trade deal giving Sri Lankan duty free access to European Union markets weakened investor sentiment, brokers said.
The government said it has rejected EU conditions to renew the GSP Plus deal which expires in August and it might use the exchange rate to help exporters remain competitive despite the loss of duty free market access.
Thakshila Hulangamuwa, vice president - business development at stock brokering firm Asha Phillip Securities, said investor sentiment would have been stronger if not for the uncertainty over "external factors.
"
Brokers said price gains on selected high value shares pushed the market up.
Ceylon Tobacco Company, a unit of multinational British American Tobacco closed at 310.00 rupees, up 8.75, Distilleries Company closed at 127.00 rupees, up 2.00 with over 2.5 million shares traded, and Central Finance Company closed at 475.
25 rupees, up 64.50.
Sampath Bank closed at 358.25 rupees, up 31.50 rupees with 923,000 shares traded, Commercial Bank closed at 184.50 rupees, down 1.75, Hatton National Bank closed at 292.
25 rupees, up 2.75 and Seylan Bank closed at 87.
00 rupees, down 2.50.
Aitken Spence closed at 1,620.50 rupees, up 50 cents, Hayleys closed at 305.00 rupees, down 3.00, Hemas Power closed at 19.50 rupees and index heavy John Keells Holdings closed at 204.
50 rupees, up 1.25.
Brokers said investors continued to take profits from some mid and small cap stocks.
Asian Hotels and Properties closed at 155.
00 rupees, down 4.00, Printcare closed at 73.00 rupees, down 2.00, while Aviva NDB Insurance closed at 220.
00 rupees, down 8.00 and Ceylon Cold Stores closed at 245.00 rupees, down 10.00 on low business volumes.
Sri Lanka Telecom, a fixed line operator closed flat at 36.50 rupees, and Dialog Telekom, a unit of Axiata Malaysia closed flat at 9.75.