Currently, whoever wins most of the country's 538 electoral votes becomes president. Under Tuesday's bill, Colorado would send its nine electoral votes to the winner of the most popular votes nationally.
"Basically, whoever receives the most votes for president in all 50 states should become president," said the sponsor, Rep. Andy Kerr, D-Lakewood.
The House voted 34-29 for Kerr's House Bill 1299. It now goes to the Senate.
It will take effect only if states representing more than half the electoral votes pass similar bills.
Republicans, led by Bob Gardner of Colorado Springs, opposed the idea, saying it minimizes Colorado's power.
"We are not 50 administrative districts. We are 50 sovereign states," Gardner said.
If HB 1299 passes, Gardner said, then the country should change its name from the United States of America to simply America, or maybe the People's Democratic Union of America.
Opponents also argued the Electoral College gives Colorado, a relatively small state, more influence relative to big states like California and Florida. But Kerr said it's a matter of fairness.
"Every vote should count, and every vote should count equally," he said.
Backers say the bill is a legal way around the Electoral College, because the Constitution tells state legislatures to decide where their electoral votes go. In practice, states now rely on the popular vote, but in the early years of the country, few states held popular votes for the presidency.
Had the scheme been in place in 2000, Colorado would have sent its electoral votes to Al Gore, who won the national popular vote, even though the majority of Colorado voters chose George W. Bush.